getTokensByZone returns instances tokens grouped by zone. Tokens within each zone are guaranteed to be sorted.
()
| 510 | // getTokensByZone returns instances tokens grouped by zone. Tokens within each zone |
| 511 | // are guaranteed to be sorted. |
| 512 | func (d *Desc) getTokensByZone() map[string][]uint32 { |
| 513 | zones := map[string][][]uint32{} |
| 514 | for _, instance := range d.Ingesters { |
| 515 | // Tokens may not be sorted for an older version, so we enforce sorting here. |
| 516 | tokens := instance.Tokens |
| 517 | if !sort.IsSorted(Tokens(tokens)) { |
| 518 | sort.Sort(Tokens(tokens)) |
| 519 | } |
| 520 | |
| 521 | zones[instance.Zone] = append(zones[instance.Zone], tokens) |
| 522 | } |
| 523 | |
| 524 | // Merge tokens per zone. |
| 525 | return MergeTokensByZone(zones) |
| 526 | } |
| 527 | |
| 528 | // getOldestRegisteredTimestamp returns unix timestamp of oldest "RegisteredTimestamp" value from all instances. |
| 529 | // If any instance has 0 value of RegisteredTimestamp, this function returns 0. |