@@ -388,11 +388,23 @@ func (i *Ingester) getOrCreateTSDB(userID string, force bool) (*tsdb.DB, error)
388
388
return nil , fmt .Errorf (errTSDBCreateIncompatibleState , ingesterState )
389
389
}
390
390
391
+ // Create the database and a shipper for a user
392
+ db , err := i .createTSDB (userID )
393
+ if err != nil {
394
+ return nil , err
395
+ }
396
+
397
+ // Add the db to list of user databases
398
+ i .TSDBState .dbs [userID ] = db
399
+ return db , nil
400
+ }
401
+
402
+ // createTSDB creates a TSDB for a given userID, and returns the created db.
403
+ func (i * Ingester ) createTSDB (userID string ) (* tsdb.DB , error ) {
391
404
udir := i .cfg .TSDBConfig .BlocksDir (userID )
392
405
393
406
// Create a new user database
394
- var err error
395
- db , err = tsdb .Open (udir , util .Logger , nil , & tsdb.Options {
407
+ db , err := tsdb .Open (udir , util .Logger , nil , & tsdb.Options {
396
408
RetentionDuration : uint64 (i .cfg .TSDBConfig .Retention / time .Millisecond ),
397
409
BlockRanges : i .cfg .TSDBConfig .BlockRanges .ToMillisecondRanges (),
398
410
NoLockfile : true ,
@@ -424,8 +436,6 @@ func (i *Ingester) getOrCreateTSDB(userID string, force bool) (*tsdb.DB, error)
424
436
})
425
437
}()
426
438
427
- i .TSDBState .dbs [userID ] = db
428
-
429
439
return db , nil
430
440
}
431
441
@@ -505,10 +515,17 @@ func (i *Ingester) openExistingTSDB(ctx context.Context) error {
505
515
go func (userID string ) {
506
516
defer wg .Done ()
507
517
defer openGate .Done ()
508
- _ , err := i .getOrCreateTSDB (userID , true ) // force create the TSDB due to the lifecycler not having started yet
518
+ db , err := i .createTSDB (userID )
509
519
if err != nil {
510
520
level .Error (util .Logger ).Log ("msg" , "unable to open user TSDB" , "err" , err , "user" , userID )
521
+ return
511
522
}
523
+
524
+ // Add the database to the map of user databases
525
+ i .userStatesMtx .Lock ()
526
+ defer i .userStatesMtx .Unlock ()
527
+ i .TSDBState .dbs [userID ] = db
528
+
512
529
}(userID )
513
530
514
531
return filepath .SkipDir // Don't descend into directories
0 commit comments