@@ -261,8 +261,10 @@ func (i *Lifecycler) setTokens(tokens Tokens) {
261
261
defer i .stateMtx .Unlock ()
262
262
263
263
i .tokens = tokens
264
- if err := i .tokens .StoreToFile (i .cfg .TokensFilePath ); err != nil {
265
- level .Error (util .Logger ).Log ("msg" , "error storing tokens to disk" , "path" , i .cfg .TokensFilePath , "err" , err )
264
+ if i .cfg .TokensFilePath != "" {
265
+ if err := i .tokens .StoreToFile (i .cfg .TokensFilePath ); err != nil {
266
+ level .Error (util .Logger ).Log ("msg" , "error storing tokens to disk" , "path" , i .cfg .TokensFilePath , "err" , err )
267
+ }
266
268
}
267
269
}
268
270
@@ -451,9 +453,22 @@ heartbeatLoop:
451
453
// - add an ingester entry to the ring
452
454
// - copies out our state and tokens if they exist
453
455
func (i * Lifecycler ) initRing (ctx context.Context ) error {
454
- var ringDesc * Desc
456
+ var (
457
+ ringDesc * Desc
458
+ tokensFromFile Tokens
459
+ err error
460
+ )
461
+
462
+ if i .cfg .TokensFilePath != "" {
463
+ tokensFromFile , err = LoadTokensFromFile (i .cfg .TokensFilePath )
464
+ if err != nil {
465
+ level .Error (util .Logger ).Log ("msg" , "error in getting tokens from file" , "err" , err )
466
+ }
467
+ } else {
468
+ level .Warn (util .Logger ).Log ("msg" , "not loading tokens from file, tokens file path is empty" )
469
+ }
455
470
456
- err : = i .KVStore .CAS (ctx , ConsulKey , func (in interface {}) (out interface {}, retry bool , err error ) {
471
+ err = i .KVStore .CAS (ctx , ConsulKey , func (in interface {}) (out interface {}, retry bool , err error ) {
457
472
if in == nil {
458
473
ringDesc = NewDesc ()
459
474
} else {
@@ -462,18 +477,14 @@ func (i *Lifecycler) initRing(ctx context.Context) error {
462
477
463
478
ingesterDesc , ok := ringDesc .Ingesters [i .ID ]
464
479
if ! ok {
465
- var tokens Tokens
466
- // We load the tokens from the file only if it does not exist in the ring yet.
467
- err := tokens .LoadFromFile (i .cfg .TokensFilePath )
468
- if err != nil {
469
- level .Error (util .Logger ).Log ("msg" , "error in getting tokens from file" , "err" , err )
470
- } else if len (tokens ) > 0 {
471
- level .Info (util .Logger ).Log ("msg" , "adding tokens from file" , "num_tokens" , len (tokens ))
472
- if len (tokens ) == i .cfg .NumTokens {
480
+ // We use the tokens from the file only if it does not exist in the ring yet.
481
+ if len (tokensFromFile ) > 0 {
482
+ level .Info (util .Logger ).Log ("msg" , "adding tokens from file" , "num_tokens" , len (tokensFromFile ))
483
+ if len (tokensFromFile ) == i .cfg .NumTokens {
473
484
i .setState (ACTIVE )
474
485
}
475
- ringDesc .AddIngester (i .ID , i .Addr , tokens , i .GetState (), i .cfg .NormaliseTokens )
476
- i .setTokens (tokens )
486
+ ringDesc .AddIngester (i .ID , i .Addr , tokensFromFile , i .GetState (), i .cfg .NormaliseTokens )
487
+ i .setTokens (tokensFromFile )
477
488
return ringDesc , true , nil
478
489
}
479
490
0 commit comments