simplify periodical executor background routine (#339)

master
Kevin Wan 4 years ago committed by GitHub
parent 10e3b8ac80
commit 510e966982
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -93,15 +93,12 @@ func (pe *PeriodicalExecutor) Wait() {
func (pe *PeriodicalExecutor) addAndCheck(task interface{}) (interface{}, bool) {
pe.lock.Lock()
defer func() {
var start bool
if !pe.guarded {
pe.guarded = true
start = true
// defer to unlock quickly
defer pe.backgroundFlush()
}
pe.lock.Unlock()
if start {
pe.backgroundFlush()
}
}()
if pe.container.AddTask(task) {
@ -148,13 +145,11 @@ func (pe *PeriodicalExecutor) cleanup() (stop bool) {
pe.guarded = false
if atomic.LoadInt32(&pe.inflight) == 0 {
stop = true
}
pe.lock.Unlock()
if stop {
// defer to unlock quickly
// flush again to avoid missing tasks
pe.Flush()
defer pe.Flush()
}
pe.lock.Unlock()
return
}

Loading…
Cancel
Save