signal: do not print message when dealing with SIG_PIPE
If we print message when SIG_PIPE occuers in signal handler.
There is a loop {print->SIG_PIPE->print->SIG_PIPE...}, which consume
a lot of cpu time. So do not print message in this situaiton.
Signed-off-by: Liu Hua <weldonliu@tencent.com>
			
			
This commit is contained in:
		| @@ -45,12 +45,17 @@ func handleSignals(ctx context.Context, signals chan os.Signal, serverC chan *se | ||||
| 			case s := <-serverC: | ||||
| 				server = s | ||||
| 			case s := <-signals: | ||||
|  | ||||
| 				// Do not print message when deailing with SIGPIPE, which may cause | ||||
| 				// nested signals and consume lots of cpu bandwidth. | ||||
| 				if s == unix.SIGPIPE { | ||||
| 					continue | ||||
| 				} | ||||
|  | ||||
| 				log.G(ctx).WithField("signal", s).Debug("received signal") | ||||
| 				switch s { | ||||
| 				case unix.SIGUSR1: | ||||
| 					dumpStacks(true) | ||||
| 				case unix.SIGPIPE: | ||||
| 					continue | ||||
| 				default: | ||||
| 					if err := notifyStopping(ctx); err != nil { | ||||
| 						log.G(ctx).WithError(err).Error("notify stopping failed") | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Liu Hua
					Liu Hua