Skip to content
Snippets Groups Projects
Commit b64db671 authored by Travis Ralston's avatar Travis Ralston
Browse files

Fix deadlock/race conditions in scheduled tasks reload

parent 8cd299a9
No related branches found
No related tags found
No related merge requests found
......@@ -71,15 +71,23 @@ func scheduleHourly(name RecurringTaskName, workFn RecurringTaskFn) {
recurLock.Lock()
defer recurLock.Unlock()
if val, ok := recurDoneChs[name]; ok {
val <- true // close that channel
// Check if closed, and close if needed
select {
case <-val:
break // already closed
default:
val <- true // close that channel
}
}
recurDoneChs[name] = ch
go func() {
defer close(ch)
defer func() {
close(ch)
recurLock.Lock()
defer recurLock.Unlock()
delete(recurDoneChs, name)
if recurDoneChs[name] == ch {
delete(recurDoneChs, name)
}
}()
for {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment