mirror of
https://github.com/taigrr/bitcask
synced 2025-01-18 04:03:17 -08:00
Commit adds signal handler to improve shutting down the bitcaskd application: (#131)
- server explicitly closes connections - server persists index on disk
This commit is contained in:
parent
4ce7610fe9
commit
a5f92da438
1
AUTHORS
1
AUTHORS
@ -12,3 +12,4 @@ Kebert Xela kebertxela
|
||||
panyun panyun
|
||||
Whemoon Jang <palindrom615@gmail.com>
|
||||
Yury Fedorov orlangure
|
||||
o2gy84 <o2gy84@gmail.com>
|
||||
|
@ -55,5 +55,7 @@ func main() {
|
||||
os.Exit(2)
|
||||
}
|
||||
|
||||
log.Fatal(server.Run())
|
||||
if err = server.Run(); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,10 @@ package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"os/signal"
|
||||
"strings"
|
||||
"syscall"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
"github.com/tidwall/redcon"
|
||||
@ -89,8 +92,13 @@ func (s *server) handleDel(cmd redcon.Command, conn redcon.Conn) {
|
||||
}
|
||||
}
|
||||
|
||||
func (s *server) Shutdown() (err error) {
|
||||
err = s.db.Close()
|
||||
return
|
||||
}
|
||||
|
||||
func (s *server) Run() (err error) {
|
||||
err = redcon.ListenAndServe(s.bind,
|
||||
redServer := redcon.NewServerNetwork("tcp", s.bind,
|
||||
func(conn redcon.Conn, cmd redcon.Command) {
|
||||
switch strings.ToLower(string(cmd.Args[0])) {
|
||||
case "ping":
|
||||
@ -118,5 +126,17 @@ func (s *server) Run() (err error) {
|
||||
func(conn redcon.Conn, err error) {
|
||||
},
|
||||
)
|
||||
|
||||
go func() {
|
||||
signals := make(chan os.Signal, 1)
|
||||
signal.Notify(signals, os.Interrupt, syscall.SIGTERM)
|
||||
s := <-signals
|
||||
log.Infof("Shutdown server on signal %s", s)
|
||||
redServer.Close()
|
||||
}()
|
||||
|
||||
if err := redServer.ListenAndServe(); err == nil {
|
||||
return s.Shutdown()
|
||||
}
|
||||
return
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user