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:
parent
7c6d710bcf
commit
86277395cf
@ -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")
|
||||
|
Loading…
Reference in New Issue
Block a user