more robust end of the world

This commit is contained in:
Ted Unangst 2020-02-18 12:34:23 -05:00
parent 2b87b84013
commit 370ef66b50
1 changed files with 5 additions and 10 deletions

15
web.go
View File

@ -983,6 +983,7 @@ func tracker() {
timeout := 4 * time.Minute
sleeper := time.NewTimer(timeout)
tracks := make(map[string][]string)
workinprogress++
for {
select {
case track := <-trackchan:
@ -2245,25 +2246,19 @@ func apihandler(w http.ResponseWriter, r *http.Request) {
var endoftheworld = make(chan bool)
var readyalready = make(chan bool)
var workinprogress = 0
func enditall() {
sig := make(chan os.Signal)
signal.Notify(sig, os.Interrupt)
signal.Notify(sig, syscall.SIGTERM)
<-sig
count := 0
log.Printf("stopping...")
sendloop:
for {
select {
case endoftheworld <- true:
count++
default:
break sendloop
}
for i := 0; i < workinprogress; i++ {
endoftheworld <- true
}
log.Printf("waiting...")
for i := 0; i < count; i++ {
for i := 0; i < workinprogress; i++ {
<-readyalready
}
log.Printf("apocalypse")