From 823eae740b239f3c2dec8837239ac7e768180d13 Mon Sep 17 00:00:00 2001 From: Lingyu Song Date: Mon, 14 Oct 2019 00:43:38 +0800 Subject: [PATCH] log: move autocommit varable value into connection info (#12310) (#12565) --- executor/set.go | 8 +++++++- server/conn.go | 18 +++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/executor/set.go b/executor/set.go index cabfc6e3fd1a2..3400e62257a9d 100644 --- a/executor/set.go +++ b/executor/set.go @@ -188,7 +188,13 @@ func (e *SetExecutor) setSysVariable(name string, v *expression.VarAssignment) e valStr, err = value.ToString() terror.Log(err) } - logutil.Logger(context.Background()).Info("set session var", zap.Uint64("conn", sessionVars.ConnectionID), zap.String("name", name), zap.String("val", valStr)) + if name != variable.AutoCommit { + logutil.Logger(context.Background()).Info("set session var", zap.Uint64("conn", sessionVars.ConnectionID), zap.String("name", name), zap.String("val", valStr)) + } else { + // Some applications will set `autocommit` variable before query. + // This will print too many unnecessary log info. + logutil.Logger(context.Background()).Debug("set session var", zap.Uint64("conn", sessionVars.ConnectionID), zap.String("name", name), zap.String("val", valStr)) + } } if name == variable.TiDBEnableStmtSummary { diff --git a/server/conn.go b/server/conn.go index 214cc7e4aa17b..6674cf42a15c0 100644 --- a/server/conn.go +++ b/server/conn.go @@ -155,7 +155,7 @@ type clientConn struct { func (cc *clientConn) String() string { collationStr := mysql.Collations[cc.collation] - return fmt.Sprintf("id:%d, addr:%s status:%d, collation:%s, user:%s", + return fmt.Sprintf("id:%d, addr:%s status:%b, collation:%s, user:%s", cc.connectionID, cc.bufReadConn.RemoteAddr(), cc.ctx.Status(), collationStr, cc.user, ) } @@ -533,6 +533,20 @@ func (cc *clientConn) readOptionalSSLRequestAndHandshakeResponse(ctx context.Con return err } +func (cc *clientConn) SessionStatusToString() string { + status := cc.ctx.Status() + inTxn, autoCommit := 0, 0 + if status&mysql.ServerStatusInTrans > 0 { + inTxn = 1 + } + if status&mysql.ServerStatusAutocommit > 0 { + autoCommit = 1 + } + return fmt.Sprintf("inTxn:%d, autocommit:%d", + inTxn, autoCommit, + ) +} + func (cc *clientConn) openSessionAndDoAuth(authData []byte) error { var tlsStatePtr *tls.ConnectionState if cc.tlsConn != nil { @@ -667,6 +681,8 @@ func (cc *clientConn) Run(ctx context.Context) { } logutil.Logger(ctx).Warn("dispatch error", zap.String("connInfo", cc.String()), + zap.String("command", mysql.Command2Str[data[0]]), + zap.String("status", cc.SessionStatusToString()), zap.String("sql", queryStrForLog(string(data[1:]))), zap.String("err", errStrForLog(err)), )