package writecachebadger import ( "context" "time" "git.frostfs.info/TrueCloudLab/frostfs-node/internal/logs" ) func (c *cache) runGCLoop(ctx context.Context) { c.wg.Add(1) go func() { defer c.wg.Done() t := time.NewTicker(c.gcInterval) defer t.Stop() for { select { case <-ctx.Done(): return case <-t.C: c.runGC() } } }() } func (c *cache) runGC() { // This serves to synchronize the c.db field when changing mode as well. c.modeMtx.RLock() defer c.modeMtx.RUnlock() ro := c.readOnly() if ro { return } // 0.5 is the recommended value so that write amplification of the value log is 2. // See https://pkg.go.dev/github.com/dgraph-io/badger/v4#DB.RunValueLogGC for more info. for c.db.RunValueLogGC(0.5) == nil { c.log.Debug(logs.WritecacheDBValueLogGCRunCompleted) } }