From 97ac2a7985307a93b97f226b7ec804b8ed4507db Mon Sep 17 00:00:00 2001 From: bb7133 Date: Thu, 3 Mar 2022 21:15:47 +0800 Subject: [PATCH 1/2] Revert "server: fix show problem for kill tidb connection (#24031) (#29212)" This reverts commit 52c68908d410570bc5b65cca4f9e4380769b4be5. --- server/server.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/server/server.go b/server/server.go index 7d8cc59f29c52..0f432cdb75292 100644 --- a/server/server.go +++ b/server/server.go @@ -623,9 +623,6 @@ func (s *Server) ShowProcessList() map[uint64]*util.ProcessInfo { defer s.rwlock.RUnlock() rs := make(map[uint64]*util.ProcessInfo, len(s.clients)) for _, client := range s.clients { - if atomic.LoadInt32(&client.status) == connStatusWaitShutdown { - continue - } if pi := client.ctx.ShowProcess(); pi != nil { rs[pi.ID] = pi } From d06ee5680539d00412a1ebdf26c90f6c4c84b345 Mon Sep 17 00:00:00 2001 From: bb7133 Date: Thu, 3 Mar 2022 21:30:51 +0800 Subject: [PATCH 2/2] server: a better way to handle killed connection --- server/conn.go | 16 ++++++++++------ server/server.go | 5 +++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/server/conn.go b/server/conn.go index e0dcae450a754..39aae85ef483c 100644 --- a/server/conn.go +++ b/server/conn.go @@ -1069,12 +1069,16 @@ func (cc *clientConn) Run(ctx context.Context) { if err != nil { if terror.ErrorNotEqual(err, io.EOF) { if netErr, isNetErr := errors.Cause(err).(net.Error); isNetErr && netErr.Timeout() { - idleTime := time.Since(start) - logutil.Logger(ctx).Info("read packet timeout, close this connection", - zap.Duration("idle", idleTime), - zap.Uint64("waitTimeout", waitTimeout), - zap.Error(err), - ) + if atomic.LoadInt32(&cc.status) == connStatusWaitShutdown { + logutil.Logger(ctx).Info("read packet timeout because of killed connection") + } else { + idleTime := time.Since(start) + logutil.Logger(ctx).Info("read packet timeout, close this connection", + zap.Duration("idle", idleTime), + zap.Uint64("waitTimeout", waitTimeout), + zap.Error(err), + ) + } } else { errStack := errors.ErrorStack(err) if !strings.Contains(errStack, "use of closed network connection") { diff --git a/server/server.go b/server/server.go index 0f432cdb75292..7be96c9fa0140 100644 --- a/server/server.go +++ b/server/server.go @@ -695,6 +695,11 @@ func killConn(conn *clientConn) { if cancelFunc != nil { cancelFunc() } + if conn.bufReadConn != nil { + if err := conn.bufReadConn.SetReadDeadline(time.Now()); err != nil { + logutil.BgLogger().Warn("error setting read deadline for kill.", zap.Error(err)) + } + } } // KillAllConnections kills all connections when server is not gracefully shutdown.