diff options
author | Giteabot <teabot@gitea.io> | 2023-03-06 09:35:07 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-06 22:35:07 +0800 |
commit | b1e68f39e737f6d130ffa8b423ee7da3075b12d7 (patch) | |
tree | 1a9b5e388b44518589068ff9f84255b52f601a34 /modules/queue/queue_channel.go | |
parent | ee3d9330a82d5483b7d832593b6615d3d3a34f31 (diff) | |
download | gitea-b1e68f39e737f6d130ffa8b423ee7da3075b12d7.tar.gz gitea-b1e68f39e737f6d130ffa8b423ee7da3075b12d7.zip |
Properly flush unique queues on startup (#23154) (#23201)
Backport #23154
There have been a number of reports of PRs being blocked whilst being
checked which have been difficult to debug. In investigating #23050 I
have realised that whilst the Warn there is somewhat of a miscall there
was a real bug in the way that the LevelUniqueQueue was being restored
on start-up of the PersistableChannelUniqueQueue.
Next there is a conflict in the setting of the internal leveldb queue
name - This wasn't being set so it was being overridden by other unique
queues.
This PR fixes these bugs and adds a testcase.
Thanks to @brechtvl for noticing the second issue.
Fix #23050
and others
Signed-off-by: Andrew Thornton <art27@cantab.net>
Co-authored-by: zeripath <art27@cantab.net>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
Co-authored-by: delvh <leon@kske.dev>
Diffstat (limited to 'modules/queue/queue_channel.go')
-rw-r--r-- | modules/queue/queue_channel.go | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/modules/queue/queue_channel.go b/modules/queue/queue_channel.go index 6f75b8357e..baac097393 100644 --- a/modules/queue/queue_channel.go +++ b/modules/queue/queue_channel.go @@ -124,7 +124,10 @@ func (q *ChannelQueue) Shutdown() { log.Trace("ChannelQueue: %s Flushing", q.name) // We can't use Cleanup here because that will close the channel if err := q.FlushWithContext(q.terminateCtx); err != nil { - log.Warn("ChannelQueue: %s Terminated before completed flushing", q.name) + count := atomic.LoadInt64(&q.numInQueue) + if count > 0 { + log.Warn("ChannelQueue: %s Terminated before completed flushing", q.name) + } return } log.Debug("ChannelQueue: %s Flushed", q.name) |