MCPcopy Create free account
hub / github.com/cortexproject/cortex / getCachedShuffledSubring

Method getCachedShuffledSubring

pkg/ring/ring.go:946–972  ·  view source on GitHub ↗
(identifier string, size int, zoneStableSharding bool)

Source from the content-addressed store, hash-verified

944}
945
946func (r *Ring) getCachedShuffledSubring(identifier string, size int, zoneStableSharding bool) *Ring {
947 if r.cfg.SubringCacheDisabled {
948 return nil
949 }
950
951 r.mtx.RLock()
952 defer r.mtx.RUnlock()
953
954 // if shuffledSubringCache map is nil, reading it returns default value (nil pointer).
955 cached := r.shuffledSubringCache[subringCacheKey{identifier: identifier, shardSize: size, zoneStableSharding: zoneStableSharding}]
956 if cached == nil {
957 return nil
958 }
959
960 cached.mtx.Lock()
961 defer cached.mtx.Unlock()
962
963 // Update instance states and timestamps. We know that the topology is the same,
964 // so zones and tokens are equal.
965 for name, cachedIng := range cached.ringDesc.Ingesters {
966 ing := r.ringDesc.Ingesters[name]
967 cachedIng.State = ing.State
968 cachedIng.Timestamp = ing.Timestamp
969 cached.ringDesc.Ingesters[name] = cachedIng
970 }
971 return cached
972}
973
974func (r *Ring) setCachedShuffledSubring(identifier string, size int, zoneStableSharding bool, subring *Ring) {
975 if subring == nil || r.cfg.SubringCacheDisabled {

Callers 1

shuffleShardWithCacheMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected