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