func (s *MemcacheStats) publishItemsStats() { s.mu.Lock() defer s.mu.Unlock() s.items = make(map[string]map[string]int64) for _, key := range itemsMetrics { key := key // create local var to keep current key s.items[key] = make(map[string]int64) stats.Publish(s.cachePool.name+"MemcacheItems"+formatKey(key), stats.CountersFunc(func() map[string]int64 { s.mu.Lock() defer s.mu.Unlock() return copyMap(s.items[key]) })) } }
// RegisterBinlogPlayerMap registers the varz for the players func RegisterBinlogPlayerMap(blm *BinlogPlayerMap) { stats.Publish("BinlogPlayerMapSize", stats.IntFunc(blm.size)) stats.Publish("BinlogPlayerSecondsBehindMaster", stats.IntFunc(func() int64 { sbm := int64(0) blm.mu.Lock() for _, bpc := range blm.players { psbm := bpc.binlogPlayerStats.SecondsBehindMaster.Get() if psbm > sbm { sbm = psbm } } blm.mu.Unlock() return sbm })) stats.Publish("BinlogPlayerSecondsBehindMasterMap", stats.CountersFunc(func() map[string]int64 { blm.mu.Lock() result := make(map[string]int64, len(blm.players)) for i, bpc := range blm.players { sbm := bpc.binlogPlayerStats.SecondsBehindMaster.Get() result[fmt.Sprintf("%v", i)] = sbm } blm.mu.Unlock() return result })) stats.Publish("BinlogPlayerSourceShardNameMap", stats.StringMapFunc(func() map[string]string { blm.mu.Lock() result := make(map[string]string, len(blm.players)) for i, bpc := range blm.players { name := bpc.sourceShard.Keyspace + "/" + bpc.sourceShard.Shard result[fmt.Sprintf("%v", i)] = name } blm.mu.Unlock() return result })) stats.Publish("BinlogPlayerSourceTabletAliasMap", stats.StringMapFunc(func() map[string]string { blm.mu.Lock() result := make(map[string]string, len(blm.players)) for i, bpc := range blm.players { bpc.playerMutex.Lock() result[fmt.Sprintf("%v", i)] = bpc.sourceTablet.String() bpc.playerMutex.Unlock() } blm.mu.Unlock() return result })) }
func (s *MemcacheStats) publishSlabsStats() { s.mu.Lock() defer s.mu.Unlock() s.slabs = make(map[string]map[string]int64) for key, isSingle := range slabsSingleMetrics { key := key s.slabs[key] = make(map[string]int64) if isSingle { stats.Publish(s.cachePool.name+"MemcacheSlabs"+formatKey(key), stats.IntFunc(func() int64 { s.mu.Lock() defer s.mu.Unlock() return s.slabs[key][""] })) } else { stats.Publish(s.cachePool.name+"MemcacheSlabs"+formatKey(key), stats.CountersFunc(func() map[string]int64 { s.mu.Lock() defer s.mu.Unlock() return copyMap(s.slabs[key]) })) } } }