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)
| 112 | // |
| 113 | // Returns ErrInconsistentTokensInfo if a token has no matching partition. |
| 114 | func 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. |
no test coverage detected