MCPcopy
hub / github.com/grafana/dskit / buildRingTokenPartitionLookups

Function buildRingTokenPartitionLookups

ring/partition_ring.go:114–133  ·  view source on GitHub ↗

buildRingTokenPartitionLookups builds two slices parallel to ringTokens: - ringPartitionIDs[i] is the partition ID that owns ringTokens[i] - ringPartitionActive[i] is true if that partition is active Returns ErrInconsistentTokensInfo if a token has no matching partition.

(ringTokens Tokens, partitionByToken map[Token]int32, partitions map[int32]PartitionDesc)

Source from the content-addressed store, hash-verified

112//
113// Returns ErrInconsistentTokensInfo if a token has no matching partition.
114func buildRingTokenPartitionLookups(ringTokens Tokens, partitionByToken map[Token]int32, partitions map[int32]PartitionDesc) ([]int32, []bool, error) {
115 ringPartitionIDs := make([]int32, len(ringTokens))
116 ringPartitionActive := make([]bool, len(ringTokens))
117
118 for i, token := range ringTokens {
119 partitionID, ok := partitionByToken[Token(token)]
120 if !ok {
121 return nil, nil, ErrInconsistentTokensInfo
122 }
123 ringPartitionIDs[i] = partitionID
124
125 partition, ok := partitions[partitionID]
126 if !ok {
127 return nil, nil, ErrInconsistentTokensInfo
128 }
129 ringPartitionActive[i] = partition.IsActive()
130 }
131
132 return ringPartitionIDs, ringPartitionActive, nil
133}
134
135// ActivePartitionForKey returns partition for the given key. Only active partitions are considered.
136// Only one partition is returned: in other terms, the replication factor is always 1.

Callers 1

Calls 2

TokenTypeAlias · 0.85
IsActiveMethod · 0.80

Tested by

no test coverage detected