mirror of https://github.com/go-gitea/gitea.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
a609cae9fb
There are a few places in FlushQueueWithContext which make an incorrect assumption about how `select` on multiple channels works. The problem is best expressed by looking at the following example: ```go package main import "fmt" func main() { closedChan := make(chan struct{}) close(closedChan) toClose := make(chan struct{}) count := 0 for { select { case <-closedChan: count++ fmt.Println(count) if count == 2 { close(toClose) } case <-toClose: return } } } ``` This PR double-checks that the contexts are closed outside of checking if there is data in the dataChan. It also rationalises the WorkerPool FlushWithContext because the previous implementation failed to handle pausing correctly. This will probably fix the underlying problem in #22145 Fix #22145 Signed-off-by: Andrew Thornton <art27@cantab.net> Signed-off-by: Andrew Thornton <art27@cantab.net> |
2 years ago | |
---|---|---|
.. | ||
bytefifo.go | 2 years ago | |
helper.go | 2 years ago | |
manager.go | 2 years ago | |
queue.go | 2 years ago | |
queue_bytefifo.go | 2 years ago | |
queue_channel.go | 2 years ago | |
queue_channel_test.go | 2 years ago | |
queue_disk.go | 2 years ago | |
queue_disk_channel.go | 2 years ago | |
queue_disk_channel_test.go | 2 years ago | |
queue_disk_test.go | 2 years ago | |
queue_redis.go | 2 years ago | |
queue_test.go | 2 years ago | |
queue_wrapped.go | 2 years ago | |
setting.go | 2 years ago | |
unique_queue.go | 2 years ago | |
unique_queue_channel.go | 2 years ago | |
unique_queue_channel_test.go | 2 years ago | |
unique_queue_disk.go | 2 years ago | |
unique_queue_disk_channel.go | 2 years ago | |
unique_queue_redis.go | 2 years ago | |
unique_queue_wrapped.go | 2 years ago | |
workerpool.go | 2 years ago |