don't report errors when the backend is expected to die

This commit is contained in:
Ted Unangst 2023-06-21 01:08:13 -04:00
parent e8ee70d0f0
commit 9f878bffde
2 changed files with 21 additions and 3 deletions

View File

@ -23,7 +23,10 @@ import (
"net/rpc"
"os"
"os/exec"
"os/signal"
"strings"
"sync"
"syscall"
"humungus.tedunangst.com/r/webs/gate"
"humungus.tedunangst.com/r/webs/image"
@ -112,6 +115,7 @@ func orphancheck() {
func backendServer() {
dlog.Printf("backend server running")
go orphancheck()
signal.Ignore(syscall.SIGINT)
shrinker := new(Shrinker)
srv := rpc.NewServer()
err := srv.Register(shrinker)
@ -152,9 +156,23 @@ func runBackendServer() {
if err != nil {
elog.Panicf("can't exec backend: %s", err)
}
workinprogress++
var mtx sync.Mutex
go func() {
<-endoftheworld
mtx.Lock()
defer mtx.Unlock()
w.Close()
w = nil
readyalready <- true
}()
go func() {
proc.Wait()
mtx.Lock()
defer mtx.Unlock()
if w != nil {
elog.Printf("lost the backend: %s", err)
w.Close()
}
}()
}

2
web.go
View File

@ -2556,7 +2556,7 @@ var workinprogress = 0
func enditall() {
sig := make(chan os.Signal)
signal.Notify(sig, os.Interrupt, syscall.SIGTERM, syscall.SIGQUIT)
signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT)
<-sig
ilog.Printf("stopping...")
for i := 0; i < workinprogress; i++ {