Add a signal handler which freezes all servers

This commit is contained in:
Benjamin Jemlich 2011-04-26 01:30:30 +08:00 committed by Mikkel Krautz
parent f273b7d328
commit bee3327e0f

View file

@ -13,6 +13,7 @@ import (
"io" "io"
"io/ioutil" "io/ioutil"
"os" "os"
"os/signal"
"log" "log"
"sqlite" "sqlite"
"path/filepath" "path/filepath"
@ -218,6 +219,23 @@ func main() {
log.Panicf("Unable to freeze server: %v", err) log.Panicf("Unable to freeze server: %v", err)
} }
} }
case sig := <-signal.Incoming:
if sig != signal.SIGINT && sig != signal.SIGTERM {
continue
}
for sid, s := range servers {
err := s.FreezeToFile(filepath.Join(*datadir, fmt.Sprintf("%v", sid)))
if err != nil {
log.Printf("Unable to freeze server %v: %s", sid, err.String())
continue
}
log.Printf("Server %v frozen", sid)
}
return
} }
} }
} }