@@ -406,7 +406,13 @@ func (d *Desc) getTokensInfo() map[uint32]instanceInfo {
406406func (d * Desc ) GetTokens () []uint32 {
407407 instances := make ([][]uint32 , 0 , len (d .Ingesters ))
408408 for _ , instance := range d .Ingesters {
409- instances = append (instances , instance .Tokens )
409+ // Tokens may not be sorted for an older version of Cortex which, so we enforce sorting here.
410+ tokens := instance .Tokens
411+ if ! sort .IsSorted (Tokens (tokens )) {
412+ sort .Sort (Tokens (tokens ))
413+ }
414+
415+ instances = append (instances , tokens )
410416 }
411417
412418 return MergeTokens (instances )
@@ -417,7 +423,13 @@ func (d *Desc) GetTokens() []uint32 {
417423func (d * Desc ) getTokensByZone () map [string ][]uint32 {
418424 zones := map [string ][][]uint32 {}
419425 for _ , instance := range d .Ingesters {
420- zones [instance .Zone ] = append (zones [instance .Zone ], instance .Tokens )
426+ // Tokens may not be sorted for an older version of Cortex which, so we enforce sorting here.
427+ tokens := instance .Tokens
428+ if ! sort .IsSorted (Tokens (tokens )) {
429+ sort .Sort (Tokens (tokens ))
430+ }
431+
432+ zones [instance .Zone ] = append (zones [instance .Zone ], tokens )
421433 }
422434
423435 // Merge tokens per zone.
0 commit comments