Browse Source

Fix broken FlushAll (#10101)

* go function contexting is not what you expect

* Apply suggestions from code review

Co-Authored-By: Lauris BH <lauris@nix.lv>

Co-authored-by: Lauris BH <lauris@nix.lv>
mj
zeripath 3 years ago
committed by GitHub
parent
commit
9b9dd19d7d
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      modules/queue/manager.go

8
modules/queue/manager.go

@ -183,17 +183,17 @@ func (m *Manager) FlushAll(baseCtx context.Context, timeout time.Duration) error
}
allEmpty = false
if flushable, ok := mq.Managed.(Flushable); ok {
go func() {
go func(q *ManagedQueue) {
localCtx, localCancel := context.WithCancel(ctx)
pid := mq.RegisterWorkers(1, start, hasTimeout, end, localCancel, true)
pid := q.RegisterWorkers(1, start, hasTimeout, end, localCancel, true)
err := flushable.FlushWithContext(localCtx)
if err != nil && err != ctx.Err() {
cancel()
}
mq.CancelWorkers(pid)
q.CancelWorkers(pid)
localCancel()
wg.Done()
}()
}(mq)
} else {
wg.Done()
}

Loading…
Cancel
Save