MCPcopy Create free account
hub / github.com/couchbase/cbft / RunRecentInfoCache

Function RunRecentInfoCache

ns_server.go:1170–1308  ·  view source on GitHub ↗
(mgr *cbgt.Manager)

Source from the content-addressed store, hash-verified

1168}
1169
1170func RunRecentInfoCache(mgr *cbgt.Manager) {
1171 cfg := mgr.Cfg()
1172
1173 cfgChangedCh := make(chan struct{}, 10)
1174
1175 var indexDefsChanged uint32
1176
1177 go func() { // Debounce cfg events to feed into the cfgChangedCh.
1178 ech := make(chan cbgt.CfgEvent)
1179 cfg.Subscribe(cbgt.PLAN_PINDEXES_DIRECTORY_STAMP, ech)
1180 cfg.Subscribe(cbgt.INDEX_DEFS_KEY, ech)
1181 cfg.Subscribe(cbgt.CfgNodeDefsKey(cbgt.NODE_DEFS_WANTED), ech)
1182
1183 for {
1184 ev := <-ech // First, wait for a cfg event.
1185
1186 // check whether it is an index defn update.
1187 if ev.Key == cbgt.INDEX_DEFS_KEY {
1188 atomic.StoreUint32(&indexDefsChanged, 1)
1189 }
1190
1191 debounceTimeCh := time.After(500 * time.Millisecond)
1192
1193 DEBOUNCE_LOOP:
1194 for {
1195 select {
1196 case ev = <-ech:
1197 // check whether it is an index defn update.
1198 if ev.Key == cbgt.INDEX_DEFS_KEY {
1199 atomic.StoreUint32(&indexDefsChanged, 1)
1200 }
1201 // NO-OP when there are more, spammy cfg events.
1202
1203 case <-debounceTimeCh:
1204 break DEBOUNCE_LOOP
1205 }
1206 }
1207
1208 cfgChangedCh <- struct{}{}
1209 }
1210 }()
1211
1212 tickCh := time.Tick(1 * time.Second)
1213
1214 memStatsLoggingInterval, _ := strconv.Atoi(mgr.Options()["memStatsLoggingInterval"])
1215 logMemStatCh := time.Tick(time.Duration(memStatsLoggingInterval) * time.Second)
1216
1217 var prevMemoryUsed uint64
1218 var curMemoryUsed uint64
1219
1220 var nodeDefs *cbgt.NodeDefs
1221 var planPIndexes *cbgt.PlanPIndexes
1222
1223 indexDefs, indexDefsMap, err := mgr.GetIndexDefs(false)
1224 if err == nil {
1225 nodeDefs, _, err = cbgt.CfgGetNodeDefs(cfg, cbgt.NODE_DEFS_WANTED)
1226 if err == nil {
1227 planPIndexes, _, err = cbgt.CfgGetPlanPIndexes(cfg)

Callers 1

initNsServerCachingFunction · 0.85

Calls 4

refreshMetaFieldValCacheFunction · 0.85
setCurMemoryUsedWithFunction · 0.85
logMemStatInfoFunction · 0.85
GetIndexDefsMethod · 0.65

Tested by

no test coverage detected