forked from External/grumble
Add a signal handler which freezes all servers
This commit is contained in:
parent
f273b7d328
commit
bee3327e0f
1 changed files with 18 additions and 0 deletions
18
grumble.go
18
grumble.go
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue