From 9b9dd19d7dfe826789f0690f84d9f59470ad9e82 Mon Sep 17 00:00:00 2001 From: zeripath Date: Sat, 1 Feb 2020 23:43:50 +0000 Subject: [PATCH] Fix broken FlushAll (#10101) * go function contexting is not what you expect * Apply suggestions from code review Co-Authored-By: Lauris BH Co-authored-by: Lauris BH --- modules/queue/manager.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/queue/manager.go b/modules/queue/manager.go index a6734787a..3e9f8fc8d 100644 --- a/modules/queue/manager.go +++ b/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() }