MCPcopy
hub / github.com/dgraph-io/badger / runWorker

Method runWorker

levels.go:373–408  ·  view source on GitHub ↗
(lc *y.Closer)

Source from the content-addressed store, hash-verified

371}
372
373func (s *levelsController) runWorker(lc *y.Closer) {
374 defer lc.Done()
375
376 randomDelay := time.NewTimer(time.Duration(rand.Int31n(1000)) * time.Millisecond)
377 select {
378 case <-randomDelay.C:
379 case <-lc.HasBeenClosed():
380 randomDelay.Stop()
381 return
382 }
383
384 ticker := time.NewTicker(time.Second)
385 defer ticker.Stop()
386
387 for {
388 select {
389 // Can add a done channel or other stuff.
390 case <-ticker.C:
391 prios := s.pickCompactLevels()
392 loop:
393 for _, p := range prios {
394 err := s.doCompact(p)
395 switch err {
396 case nil:
397 break loop
398 case errFillTables:
399 // pass
400 default:
401 s.kv.opt.Warningf("While running doCompact: %v\n", err)
402 }
403 }
404 case <-lc.HasBeenClosed():
405 return
406 }
407 }
408}
409
410// Returns true if level zero may be compacted, without accounting for compactions that already
411// might be happening.

Callers 1

startCompactMethod · 0.95

Calls 6

pickCompactLevelsMethod · 0.95
doCompactMethod · 0.95
HasBeenClosedMethod · 0.80
WarningfMethod · 0.65
DoneMethod · 0.45
StopMethod · 0.45

Tested by

no test coverage detected