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>
This commit is contained in:
parent
72f9cfc8f0
commit
9b9dd19d7d
@ -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…
Reference in New Issue
Block a user