Exemple #1
0
func handleSignals(serfAgent *agent.Agent, shutdownCh <-chan struct{}) {
	signalCh := make(chan os.Signal, 4)
	signal.Notify(signalCh, os.Interrupt, syscall.SIGTERM, syscall.SIGHUP)

	// Wait for signal
	// FIXME serf shutdowns too damn fast !
WAIT:
	select {
	case sig := <-signalCh:
		log.Info("caught signal: %v\n", sig)
		if sig == syscall.SIGHUP {
			// serf catches this signal to reload its configuration
			// NOTE reload sentinel conf ?
			goto WAIT
		} else {
			return
		}
	case <-shutdownCh:
		return
	case <-serfAgent.ShutdownCh():
		// Agent is already shutdown!
		return
	}
}