*: unify_log_lib (#23093)
This commit is contained in:
@ -21,6 +21,7 @@ import (
|
||||
"time"
|
||||
|
||||
. "github.com/pingcap/check"
|
||||
"github.com/pingcap/log"
|
||||
"github.com/pingcap/parser/terror"
|
||||
"github.com/pingcap/tidb/kv"
|
||||
plannercore "github.com/pingcap/tidb/planner/core"
|
||||
@ -28,7 +29,7 @@ import (
|
||||
"github.com/pingcap/tidb/table"
|
||||
"github.com/pingcap/tidb/table/tables"
|
||||
"github.com/pingcap/tidb/types"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"go.uber.org/zap"
|
||||
goctx "golang.org/x/net/context"
|
||||
)
|
||||
|
||||
@ -56,7 +57,7 @@ func (s *TestDDLSuite) checkAddColumn(c *C, rowID int64, defaultVal interface{},
|
||||
// When insert a row with 3 columns, the third column value will be the first column value.
|
||||
newInsertCount++
|
||||
} else {
|
||||
log.Fatalf("[checkAddColumn fail]invalid row: %v", data)
|
||||
log.Fatal("[checkAddColumn fail]invalid row", zap.Any("row", data))
|
||||
}
|
||||
}
|
||||
|
||||
@ -67,7 +68,7 @@ func (s *TestDDLSuite) checkAddColumn(c *C, rowID int64, defaultVal interface{},
|
||||
} else if reflect.DeepEqual(col3Val, updatedVal) {
|
||||
newUpdateCount++
|
||||
} else {
|
||||
log.Fatalf("[checkAddColumn fail]invalid row: %v", data)
|
||||
log.Fatal("[checkAddColumn fail]invalid row", zap.Any("row", data))
|
||||
}
|
||||
}
|
||||
|
||||
@ -102,7 +103,7 @@ func (s *TestDDLSuite) checkDropColumn(c *C, rowID int64, alterColumn *table.Col
|
||||
// Check updated row.
|
||||
updateCount++
|
||||
} else {
|
||||
log.Fatalf("[checkDropColumn fail]invalid row: %v", data)
|
||||
log.Fatal("[checkDropColumn fail]invalid row", zap.Any("row", data))
|
||||
}
|
||||
return true, nil
|
||||
})
|
||||
|
||||
@ -32,6 +32,7 @@ import (
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
. "github.com/pingcap/check"
|
||||
"github.com/pingcap/errors"
|
||||
"github.com/pingcap/log"
|
||||
zaplog "github.com/pingcap/log"
|
||||
"github.com/pingcap/parser/model"
|
||||
"github.com/pingcap/parser/terror"
|
||||
@ -48,7 +49,7 @@ import (
|
||||
"github.com/pingcap/tidb/util/logutil"
|
||||
"github.com/pingcap/tidb/util/testkit"
|
||||
"github.com/pingcap/tidb/util/testutil"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"go.uber.org/zap"
|
||||
goctx "golang.org/x/net/context"
|
||||
)
|
||||
|
||||
@ -163,7 +164,7 @@ func (s *TestDDLSuite) restartServerRegularly() {
|
||||
if *enableRestart {
|
||||
err = s.restartServerRand()
|
||||
if err != nil {
|
||||
log.Fatalf("restartServerRand failed, err %v", errors.ErrorStack(err))
|
||||
log.Fatal("restartServerRand failed", zap.Error(err))
|
||||
}
|
||||
}
|
||||
case <-s.quit:
|
||||
@ -184,7 +185,7 @@ func (s *TestDDLSuite) TearDownSuite(c *C) {
|
||||
case <-time.After(100 * time.Second):
|
||||
buf := make([]byte, 2<<20)
|
||||
size := runtime.Stack(buf, true)
|
||||
log.Errorf("%s", buf[:size])
|
||||
log.Error("testing timeout", zap.ByteString("buf", buf[:size]))
|
||||
case <-quitCh:
|
||||
}
|
||||
}()
|
||||
@ -224,12 +225,12 @@ func (s *TestDDLSuite) killServer(proc *os.Process) error {
|
||||
// Make sure this tidb is killed, and it makes the next tidb that has the same port as this one start quickly.
|
||||
err := proc.Kill()
|
||||
if err != nil {
|
||||
log.Errorf("kill server failed err %v", err)
|
||||
log.Error("kill server failed", zap.Error(err))
|
||||
return errors.Trace(err)
|
||||
}
|
||||
_, err = proc.Wait()
|
||||
if err != nil {
|
||||
log.Errorf("kill server, wait failed err %v", err)
|
||||
log.Error("kill server, wait failed", zap.Error(err))
|
||||
return errors.Trace(err)
|
||||
}
|
||||
|
||||
@ -296,25 +297,29 @@ func (s *TestDDLSuite) startServer(i int, fp *os.File) (*server, error) {
|
||||
for i := 0; i < s.retryCount; i++ {
|
||||
db, err = sql.Open("mysql", fmt.Sprintf("root@(%s)/test_ddl", addr))
|
||||
if err != nil {
|
||||
log.Warnf("open addr %v failed, retry count %d err %v", addr, i, err)
|
||||
log.Warn("open addr failed", zap.String("addr", addr), zap.Int("retry count", i), zap.Error(err))
|
||||
continue
|
||||
}
|
||||
err = db.Ping()
|
||||
if err == nil {
|
||||
break
|
||||
}
|
||||
log.Warnf("ping addr %v failed, retry count %d err %v", addr, i, err)
|
||||
log.Warn("ping addr failed", zap.String("addr", addr), zap.Int("retry count", i), zap.Error(err))
|
||||
|
||||
err = db.Close()
|
||||
if err != nil {
|
||||
log.Warnf("close db failed, retry count %d err %v", i, err)
|
||||
log.Warn("close db failed", zap.Int("retry count", i), zap.Error(err))
|
||||
break
|
||||
}
|
||||
time.Sleep(sleepTime)
|
||||
sleepTime += sleepTime
|
||||
}
|
||||
if err != nil {
|
||||
log.Errorf("restart server addr %v failed %v, take time %v", addr, err, time.Since(startTime))
|
||||
log.Error("restart server addr failed",
|
||||
zap.String("addr", addr),
|
||||
zap.Duration("take time", time.Since(startTime)),
|
||||
zap.Error(err),
|
||||
)
|
||||
return nil, errors.Trace(err)
|
||||
}
|
||||
db.SetMaxOpenConns(10)
|
||||
@ -324,7 +329,7 @@ func (s *TestDDLSuite) startServer(i int, fp *os.File) (*server, error) {
|
||||
return nil, errors.Trace(err)
|
||||
}
|
||||
|
||||
log.Infof("start server %s ok %v", addr, err)
|
||||
log.Info("start server ok", zap.String("addr", addr), zap.Error(err))
|
||||
|
||||
return &server{
|
||||
Cmd: cmd,
|
||||
@ -346,7 +351,7 @@ func (s *TestDDLSuite) restartServerRand() error {
|
||||
|
||||
server := s.procs[i]
|
||||
s.procs[i] = nil
|
||||
log.Warnf("begin to restart %s", server.addr)
|
||||
log.Warn("begin to restart", zap.String("addr", server.addr))
|
||||
err := s.killServer(server.Process)
|
||||
if err != nil {
|
||||
return errors.Trace(err)
|
||||
@ -372,11 +377,11 @@ func isRetryError(err error) bool {
|
||||
|
||||
// TODO: Check the specific columns number.
|
||||
if strings.Contains(err.Error(), "Column count doesn't match value count at row") {
|
||||
log.Warnf("err is %v", err)
|
||||
log.Warn("err", zap.Error(err))
|
||||
return false
|
||||
}
|
||||
|
||||
log.Errorf("err is %v, can not retry", err)
|
||||
log.Error("can not retry", zap.Error(err))
|
||||
|
||||
return false
|
||||
}
|
||||
@ -386,7 +391,11 @@ func (s *TestDDLSuite) exec(query string, args ...interface{}) (sql.Result, erro
|
||||
server := s.getServer()
|
||||
r, err := server.db.Exec(query, args...)
|
||||
if isRetryError(err) {
|
||||
log.Errorf("exec %s in server %s err %v, retry", query, err, server.addr)
|
||||
log.Error("exec in server, retry",
|
||||
zap.String("query", query),
|
||||
zap.String("addr", server.addr),
|
||||
zap.Error(err),
|
||||
)
|
||||
continue
|
||||
}
|
||||
|
||||
@ -397,7 +406,11 @@ func (s *TestDDLSuite) exec(query string, args ...interface{}) (sql.Result, erro
|
||||
func (s *TestDDLSuite) mustExec(c *C, query string, args ...interface{}) sql.Result {
|
||||
r, err := s.exec(query, args...)
|
||||
if err != nil {
|
||||
log.Fatalf("[mustExec fail]query - %v %v, error - %v", query, args, err)
|
||||
log.Fatal("[mustExec fail]query",
|
||||
zap.String("query", query),
|
||||
zap.Any("args", args),
|
||||
zap.Error(err),
|
||||
)
|
||||
}
|
||||
|
||||
return r
|
||||
@ -418,7 +431,11 @@ func (s *TestDDLSuite) execInsert(c *C, query string, args ...interface{}) sql.R
|
||||
}
|
||||
}
|
||||
|
||||
log.Fatalf("[execInsert fail]query - %v %v, error - %v", query, args, err)
|
||||
log.Fatal("[execInsert fail]query",
|
||||
zap.String("query", query),
|
||||
zap.Any("args", args),
|
||||
zap.Error(err),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@ -427,7 +444,11 @@ func (s *TestDDLSuite) query(query string, args ...interface{}) (*sql.Rows, erro
|
||||
server := s.getServer()
|
||||
r, err := server.db.Query(query, args...)
|
||||
if isRetryError(err) {
|
||||
log.Errorf("query %s in server %s err %v, retry", query, err, server.addr)
|
||||
log.Error("query in server, retry",
|
||||
zap.String("query", query),
|
||||
zap.String("addr", server.addr),
|
||||
zap.Error(err),
|
||||
)
|
||||
continue
|
||||
}
|
||||
|
||||
@ -447,7 +468,7 @@ func (s *TestDDLSuite) getServer() *server {
|
||||
}
|
||||
}
|
||||
|
||||
log.Fatalf("try to get server too many times")
|
||||
log.Fatal("try to get server too many times")
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -787,7 +808,7 @@ func (s *TestDDLSuite) TestSimpleConflictUpdate(c *C) {
|
||||
c.Assert(keysMap, HasKey, data[0].GetValue())
|
||||
|
||||
if !reflect.DeepEqual(data[1].GetValue(), data[0].GetValue()) && !reflect.DeepEqual(data[1].GetValue(), defaultValue) {
|
||||
log.Fatalf("[TestSimpleConflictUpdate fail]Bad row: %v", data)
|
||||
log.Fatal("[TestSimpleConflictUpdate fail]Bad row", zap.Any("row", data))
|
||||
}
|
||||
|
||||
return true, nil
|
||||
@ -978,7 +999,7 @@ func (s *TestDDLSuite) TestSimpleMixed(c *C) {
|
||||
} else if reflect.DeepEqual(data[1].GetValue(), defaultValue) && data[0].GetInt64() < int64(rowCount) {
|
||||
updateCount++
|
||||
} else {
|
||||
log.Fatalf("[TestSimpleMixed fail]invalid row: %v", data)
|
||||
log.Fatal("[TestSimpleMixed fail]invalid row", zap.Any("row", data))
|
||||
}
|
||||
|
||||
return true, nil
|
||||
|
||||
@ -19,6 +19,7 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/pingcap/errors"
|
||||
"github.com/pingcap/log"
|
||||
"github.com/pingcap/parser"
|
||||
"github.com/pingcap/parser/ast"
|
||||
"github.com/pingcap/parser/model"
|
||||
@ -26,7 +27,7 @@ import (
|
||||
_ "github.com/pingcap/tidb/planner/core"
|
||||
"github.com/pingcap/tidb/types"
|
||||
"github.com/pingcap/tidb/util/mock"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type column struct {
|
||||
@ -73,7 +74,7 @@ func (col *column) parseRule(kvs []string, uniq bool) {
|
||||
var err error
|
||||
col.data.step, err = strconv.ParseInt(value, 10, 64)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Fatal("parsing err", zap.String("key", key), zap.Error(err))
|
||||
}
|
||||
} else if key == "set" {
|
||||
fields := strings.Split(value, ",")
|
||||
@ -84,12 +85,12 @@ func (col *column) parseRule(kvs []string, uniq bool) {
|
||||
var err error
|
||||
col.incremental, err = strconv.ParseBool(value)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Fatal("parsing err", zap.String("key", key), zap.Error(err))
|
||||
}
|
||||
} else if key == "repeats" {
|
||||
repeats, err := strconv.ParseUint(value, 10, 64)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Fatal("parsing err", zap.String("key", key), zap.Error(err))
|
||||
}
|
||||
if uniq && repeats > 1 {
|
||||
log.Fatal("cannot repeat more than 1 times on unique columns")
|
||||
@ -99,7 +100,7 @@ func (col *column) parseRule(kvs []string, uniq bool) {
|
||||
} else if key == "probability" {
|
||||
prob, err := strconv.ParseUint(value, 10, 32)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Fatal("parsing err", zap.String("key", key), zap.Error(err))
|
||||
}
|
||||
if prob > 100 || prob == 0 {
|
||||
log.Fatal("probability must be in (0, 100]")
|
||||
|
||||
@ -30,6 +30,7 @@ import (
|
||||
|
||||
"github.com/pingcap/errors"
|
||||
"github.com/pingcap/kvproto/pkg/kvrpcpb"
|
||||
"github.com/pingcap/log"
|
||||
"github.com/pingcap/parser/model"
|
||||
"github.com/pingcap/tidb/kv"
|
||||
"github.com/pingcap/tidb/store/tikv"
|
||||
@ -40,7 +41,6 @@ import (
|
||||
"github.com/pingcap/tidb/util/codec"
|
||||
"github.com/pingcap/tidb/util/logutil"
|
||||
"github.com/pingcap/tidb/util/pdapi"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
@ -861,7 +861,7 @@ func (h *Helper) GetPDRegionStats(tableID int64, stats *PDRegionStats) error {
|
||||
|
||||
defer func() {
|
||||
if err = resp.Body.Close(); err != nil {
|
||||
log.Error(err)
|
||||
log.Error("err", zap.Error(err))
|
||||
}
|
||||
}()
|
||||
|
||||
|
||||
@ -21,6 +21,7 @@ import (
|
||||
"net/url"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
@ -28,9 +29,9 @@ import (
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
"github.com/juju/errors"
|
||||
. "github.com/pingcap/check"
|
||||
"github.com/pingcap/log"
|
||||
zaplog "github.com/pingcap/log"
|
||||
"github.com/pingcap/tidb/util/logutil"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"go.etcd.io/etcd/clientv3"
|
||||
"go.uber.org/zap"
|
||||
"google.golang.org/grpc"
|
||||
@ -107,7 +108,7 @@ func (s *TestGlobalKillSuite) connectPD() (cli *clientv3.Client, err error) {
|
||||
cli.Close()
|
||||
return nil, errors.Trace(err)
|
||||
}
|
||||
log.Infof("pd connected")
|
||||
log.Info("pd connected")
|
||||
return cli, nil
|
||||
}
|
||||
|
||||
@ -120,7 +121,7 @@ func (s *TestGlobalKillSuite) startTiDBWithoutPD(port int, statusPort int) (cmd
|
||||
fmt.Sprintf("--status=%d", statusPort),
|
||||
fmt.Sprintf("--log-file=%s/tidb%d.log", *tmpPath, port),
|
||||
fmt.Sprintf("--config=%s", "./config.toml"))
|
||||
log.Infof("starting tidb: %v", cmd)
|
||||
log.Info("starting tidb", zap.Any("cmd", cmd))
|
||||
err = cmd.Start()
|
||||
if err != nil {
|
||||
return nil, errors.Trace(err)
|
||||
@ -138,7 +139,7 @@ func (s *TestGlobalKillSuite) startTiDBWithPD(port int, statusPort int, pdPath s
|
||||
fmt.Sprintf("--status=%d", statusPort),
|
||||
fmt.Sprintf("--log-file=%s/tidb%d.log", *tmpPath, port),
|
||||
fmt.Sprintf("--config=%s", "./config.toml"))
|
||||
log.Infof("starting tidb: %v", cmd)
|
||||
log.Info("starting tidb", zap.Any("cmd", cmd))
|
||||
err = cmd.Start()
|
||||
if err != nil {
|
||||
return nil, errors.Trace(err)
|
||||
@ -155,7 +156,7 @@ func (s *TestGlobalKillSuite) stopService(name string, cmd *exec.Cmd, graceful b
|
||||
if err = cmd.Wait(); err != nil {
|
||||
return errors.Trace(err)
|
||||
}
|
||||
log.Infof("service \"%s\" stopped gracefully", name)
|
||||
log.Info("service stopped gracefully", zap.String("name", name))
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -163,7 +164,7 @@ func (s *TestGlobalKillSuite) stopService(name string, cmd *exec.Cmd, graceful b
|
||||
return errors.Trace(err)
|
||||
}
|
||||
time.Sleep(1 * time.Second)
|
||||
log.Infof("service \"%s\" killed", name)
|
||||
log.Info("service killed", zap.String("name", name))
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -183,7 +184,7 @@ func (s *TestGlobalKillSuite) startPDProxy() (proxy *pdProxy, err error) {
|
||||
if err := p.Start(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
log.Infof("start PD proxy: %s --> %s", from, dst)
|
||||
log.Info("start PD proxy", zap.String("from", from), zap.String("dst", dst))
|
||||
return &p, nil
|
||||
}
|
||||
|
||||
@ -195,14 +196,22 @@ func (s *TestGlobalKillSuite) connectTiDB(port int) (db *sql.DB, err error) {
|
||||
for i := 0; i < 5; i++ {
|
||||
db, err = sql.Open("mysql", dsn)
|
||||
if err != nil {
|
||||
log.Warnf("open addr %v failed, retry count %d err %v", addr, i, err)
|
||||
log.Warn("open addr failed",
|
||||
zap.String("addr", addr),
|
||||
zap.Int("retry count", i),
|
||||
zap.Error(err),
|
||||
)
|
||||
continue
|
||||
}
|
||||
err = db.Ping()
|
||||
if err == nil {
|
||||
break
|
||||
}
|
||||
log.Warnf("ping addr %v failed, retry count %d err %v", addr, i, err)
|
||||
log.Warn("ping addr failed",
|
||||
zap.String("addr", addr),
|
||||
zap.Int("retry count", i),
|
||||
zap.Error(err),
|
||||
)
|
||||
|
||||
err = db.Close()
|
||||
if err != nil {
|
||||
@ -212,12 +221,16 @@ func (s *TestGlobalKillSuite) connectTiDB(port int) (db *sql.DB, err error) {
|
||||
sleepTime += sleepTime
|
||||
}
|
||||
if err != nil {
|
||||
log.Errorf("connect to server addr %v failed %v, take time %v", addr, err, time.Since(startTime))
|
||||
log.Error("connect to server addr failed",
|
||||
zap.String("addr", addr),
|
||||
zap.Duration("take time", time.Since(startTime)),
|
||||
zap.Error(err),
|
||||
)
|
||||
return nil, errors.Trace(err)
|
||||
}
|
||||
db.SetMaxOpenConns(10)
|
||||
|
||||
log.Infof("connect to server %s ok", addr)
|
||||
log.Info("connect to server ok", zap.String("addr", addr))
|
||||
return db, nil
|
||||
}
|
||||
|
||||
@ -232,7 +245,7 @@ func (s *TestGlobalKillSuite) killByCtrlC(c *C, port int, sleepTime int) time.Du
|
||||
fmt.Sprintf("-P%d", port),
|
||||
"-uroot",
|
||||
"-e", fmt.Sprintf("SELECT SLEEP(%d);", sleepTime))
|
||||
log.Infof("run mysql cli: %v", cli)
|
||||
log.Info("run mysql cli", zap.Any("cli", cli))
|
||||
|
||||
ch := make(chan sleepResult)
|
||||
go func() {
|
||||
@ -244,7 +257,7 @@ func (s *TestGlobalKillSuite) killByCtrlC(c *C, port int, sleepTime int) time.Du
|
||||
}
|
||||
|
||||
elapsed := time.Since(startTS)
|
||||
log.Infof("mysql cli takes: %v", elapsed)
|
||||
log.Info("mysql cli takes", zap.Duration("elapsed", elapsed))
|
||||
ch <- sleepResult{elapsed: elapsed}
|
||||
}()
|
||||
|
||||
@ -262,9 +275,9 @@ func sleepRoutine(ctx context.Context, sleepTime int, conn *sql.Conn, connID uin
|
||||
startTS := time.Now()
|
||||
sql := fmt.Sprintf("SELECT SLEEP(%d);", sleepTime)
|
||||
if connID > 0 {
|
||||
log.Infof("exec: %s [on 0x%x]", sql, connID)
|
||||
log.Info("exec sql", zap.String("sql", sql), zap.String("connID", "0x"+strconv.FormatUint(connID, 16)))
|
||||
} else {
|
||||
log.Infof("exec: %s", sql)
|
||||
log.Info("exec sql", zap.String("sql", sql))
|
||||
}
|
||||
rows, err := conn.QueryContext(ctx, sql)
|
||||
if err != nil {
|
||||
@ -278,7 +291,7 @@ func sleepRoutine(ctx context.Context, sleepTime int, conn *sql.Conn, connID uin
|
||||
}
|
||||
|
||||
elapsed := time.Since(startTS)
|
||||
log.Infof("sleepRoutine takes %v", elapsed)
|
||||
log.Info("sleepRoutine takes", zap.Duration("elapsed", elapsed))
|
||||
ch <- sleepResult{elapsed: elapsed}
|
||||
}
|
||||
|
||||
@ -293,7 +306,7 @@ func (s *TestGlobalKillSuite) killByKillStatement(c *C, db1 *sql.DB, db2 *sql.DB
|
||||
var connID1 uint64
|
||||
err = conn1.QueryRowContext(ctx, "SELECT CONNECTION_ID();").Scan(&connID1)
|
||||
c.Assert(err, IsNil)
|
||||
log.Infof("connID1: 0x%x", connID1)
|
||||
log.Info("connID1", zap.String("connID1", "0x"+strconv.FormatUint(connID1, 16)))
|
||||
|
||||
ch := make(chan sleepResult)
|
||||
go sleepRoutine(ctx, sleepTime, conn1, connID1, ch)
|
||||
@ -306,9 +319,12 @@ func (s *TestGlobalKillSuite) killByKillStatement(c *C, db1 *sql.DB, db2 *sql.DB
|
||||
var connID2 uint64
|
||||
err = conn2.QueryRowContext(ctx, "SELECT CONNECTION_ID();").Scan(&connID2)
|
||||
c.Assert(err, IsNil)
|
||||
log.Infof("connID2: 0x%x", connID2)
|
||||
log.Info("connID2", zap.String("connID2", "0x"+strconv.FormatUint(connID2, 16)))
|
||||
|
||||
log.Infof("exec: KILL QUERY %v(0x%x) [on 0x%x]", connID1, connID1, connID2)
|
||||
log.Info("exec: KILL QUERY",
|
||||
zap.String("connID1", "0x"+strconv.FormatUint(connID1, 16)),
|
||||
zap.String("connID2", "0x"+strconv.FormatUint(connID2, 16)),
|
||||
)
|
||||
_, err = conn2.ExecContext(ctx, fmt.Sprintf("KILL QUERY %v", connID1))
|
||||
c.Assert(err, IsNil)
|
||||
|
||||
@ -462,33 +478,33 @@ func (s *TestGlobalKillSuite) TestLostConnection(c *C) {
|
||||
time.Sleep(waitToStartup) // wait go-routine to start.
|
||||
|
||||
// disconnect to PD by closing PD proxy.
|
||||
log.Infof("shutdown PD proxy to simulate lost connection to PD.")
|
||||
log.Info("shutdown PD proxy to simulate lost connection to PD.")
|
||||
pdProxy.Close()
|
||||
pdProxy.closeAllConnections()
|
||||
|
||||
// wait for "lostConnectionToPDTimeout" elapsed.
|
||||
// delay additional 3 seconds for TiDB would have a small interval to detect lost connection more than "lostConnectionToPDTimeout".
|
||||
sleepTime := time.Duration(*lostConnectionToPDTimeout+3) * time.Second
|
||||
log.Infof("sleep %v to wait for TiDB had detected lost connection", sleepTime)
|
||||
log.Info("sleep to wait for TiDB had detected lost connection", zap.Duration("sleepTime", sleepTime))
|
||||
time.Sleep(sleepTime)
|
||||
|
||||
// check running sql
|
||||
// [Test Scenario 4] Existing connections are killed after PD lost connection for long time.
|
||||
r := <-ch
|
||||
log.Infof("sleepRoutine err: %v", r.err)
|
||||
log.Info("sleepRoutine err", zap.Error(r.err))
|
||||
c.Assert(r.err, NotNil)
|
||||
c.Assert(r.err.Error(), Equals, "invalid connection")
|
||||
|
||||
// check new connection.
|
||||
// [Test Scenario 5] New connections are not accepted after PD lost connection for long time.
|
||||
log.Infof("check connection after lost connection to PD.")
|
||||
log.Info("check connection after lost connection to PD.")
|
||||
_, err = s.connectTiDB(port1)
|
||||
log.Infof("connectTiDB err: %v", err)
|
||||
log.Info("connectTiDB err", zap.Error(r.err))
|
||||
c.Assert(err, NotNil)
|
||||
c.Assert(err.Error(), Equals, "driver: bad connection")
|
||||
|
||||
// start PD proxy to restore connection.
|
||||
log.Infof("restart pdProxy")
|
||||
log.Info("restart pdProxy")
|
||||
pdProxy1, err := s.startPDProxy()
|
||||
c.Assert(err, IsNil)
|
||||
defer pdProxy1.Close()
|
||||
@ -496,7 +512,7 @@ func (s *TestGlobalKillSuite) TestLostConnection(c *C) {
|
||||
// wait for "timeToCheckPDConnectionRestored" elapsed.
|
||||
// delay additional 3 seconds for TiDB would have a small interval to detect lost connection restored more than "timeToCheckPDConnectionRestored".
|
||||
sleepTime = time.Duration(*timeToCheckPDConnectionRestored+3) * time.Second
|
||||
log.Infof("sleep %v to wait for TiDB had detected lost connection restored", sleepTime)
|
||||
log.Info("sleep to wait for TiDB had detected lost connection restored", zap.Duration("sleepTime", sleepTime))
|
||||
time.Sleep(sleepTime)
|
||||
|
||||
// check restored
|
||||
|
||||
@ -9,7 +9,6 @@ require (
|
||||
github.com/pingcap/log v0.0.0-20200828042413-fce0951f1463
|
||||
github.com/pingcap/tidb v1.1.0-beta.0.20201020170636-b71b6323fd4d
|
||||
github.com/pingcap/tipb v0.0.0-20201020032630-6dac8b6c0aab // indirect
|
||||
github.com/sirupsen/logrus v1.6.0
|
||||
go.etcd.io/etcd v0.5.0-alpha.5.0.20191023171146-3cf2f69b5738
|
||||
go.uber.org/zap v1.16.0
|
||||
google.golang.org/grpc v1.26.0
|
||||
|
||||
@ -411,6 +411,7 @@ github.com/pingcap/errors v0.11.0/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTw
|
||||
github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
|
||||
github.com/pingcap/errors v0.11.5-0.20190809092503-95897b64e011/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
|
||||
github.com/pingcap/errors v0.11.5-0.20200902104258-eba4f1d8f6de/go.mod h1:g4vx//d6VakjJ0mk7iLBlKA8LFavV/sAVINT/1PFxeQ=
|
||||
github.com/pingcap/errors v0.11.5-0.20200917111840-a15ef68f753d h1:TH18wFO5Nq/zUQuWu9ms2urgZnLP69XJYiI2JZAkUGc=
|
||||
github.com/pingcap/errors v0.11.5-0.20200917111840-a15ef68f753d/go.mod h1:g4vx//d6VakjJ0mk7iLBlKA8LFavV/sAVINT/1PFxeQ=
|
||||
github.com/pingcap/failpoint v0.0.0-20191029060244-12f4ac2fd11d/go.mod h1:DNS3Qg7bEDhU6EXNHF+XSv/PGznQaMJ5FWvctpm6pQI=
|
||||
github.com/pingcap/failpoint v0.0.0-20200702092429-9f69995143ce h1:Y1kCxlCtlPTMtVcOkjUcuQKh+YrluSo7+7YMCQSzy30=
|
||||
|
||||
@ -16,7 +16,8 @@ package globalkilltest
|
||||
import (
|
||||
"net"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
"github.com/pingcap/log"
|
||||
"go.uber.org/zap"
|
||||
"inet.af/tcpproxy"
|
||||
)
|
||||
|
||||
@ -57,7 +58,7 @@ func (dp *pdDialProxy) HandleConn(src net.Conn) {
|
||||
func (dp *pdDialProxy) closeAllConnections() {
|
||||
for _, conn := range dp.connections {
|
||||
if err := conn.Close(); err != nil { // Notice: will close a connection twice. Ignore for test purpose.
|
||||
log.Errorf("closeAllConnections err: %v", err)
|
||||
log.Error("closeAllConnections err", zap.Error(err))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ go 1.15
|
||||
require (
|
||||
github.com/go-sql-driver/mysql v1.5.0
|
||||
github.com/juju/errors v0.0.0-20200330140219-3fe23663418f
|
||||
github.com/juju/testing v0.0.0-20210302031854-2c7ee8570c07 // indirect
|
||||
github.com/pingcap/check v0.0.0-20200212061837-5e12011dc712
|
||||
github.com/sirupsen/logrus v1.7.0
|
||||
github.com/pingcap/log v0.0.0-20191012051959-b742a5d432e9
|
||||
)
|
||||
|
||||
@ -1,29 +1,73 @@
|
||||
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
|
||||
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||
github.com/juju/ansiterm v0.0.0-20160907234532-b99631de12cf/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU=
|
||||
github.com/juju/clock v0.0.0-20190205081909-9c5c9712527c/go.mod h1:nD0vlnrUjcjJhqN5WuCWZyzfd5AHZAC9/ajvbSx69xA=
|
||||
github.com/juju/cmd v0.0.0-20171107070456-e74f39857ca0/go.mod h1:yWJQHl73rdSX4DHVKGqkAip+huBslxRwS8m9CrOLq18=
|
||||
github.com/juju/collections v0.0.0-20200605021417-0d0ec82b7271/go.mod h1:5XgO71dV1JClcOJE+4dzdn4HrI5LiyKd7PlVG6eZYhY=
|
||||
github.com/juju/errors v0.0.0-20150916125642-1b5e39b83d18/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q=
|
||||
github.com/juju/errors v0.0.0-20200330140219-3fe23663418f h1:MCOvExGLpaSIzLYB4iQXEHP4jYVU6vmzLNQPdMVrxnM=
|
||||
github.com/juju/errors v0.0.0-20200330140219-3fe23663418f/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q=
|
||||
github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE=
|
||||
github.com/juju/httpprof v0.0.0-20141217160036-14bf14c30767/go.mod h1:+MaLYz4PumRkkyHYeXJ2G5g5cIW0sli2bOfpmbaMV/g=
|
||||
github.com/juju/loggo v0.0.0-20170605014607-8232ab8918d9/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U=
|
||||
github.com/juju/loggo v0.0.0-20200526014432-9ce3a2e09b5e h1:FdDd7bdI6cjq5vaoYlK1mfQYfF9sF2VZw8VEZMsl5t8=
|
||||
github.com/juju/loggo v0.0.0-20200526014432-9ce3a2e09b5e/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U=
|
||||
github.com/juju/mgo/v2 v2.0.0-20210302023703-70d5d206e208 h1:/WiCm+Vpj87e4QWuWwPD/bNE9kDrWCLvPBHOQNcG2+A=
|
||||
github.com/juju/mgo/v2 v2.0.0-20210302023703-70d5d206e208/go.mod h1:0OChplkvPTZ174D2FYZXg4IB9hbEwyHkD+zT+/eK+Fg=
|
||||
github.com/juju/mutex v0.0.0-20171110020013-1fe2a4bf0a3a/go.mod h1:Y3oOzHH8CQ0Ppt0oCKJ2JFO81/EsWenH5AEqigLH+yY=
|
||||
github.com/juju/retry v0.0.0-20151029024821-62c620325291/go.mod h1:OohPQGsr4pnxwD5YljhQ+TZnuVRYpa5irjugL1Yuif4=
|
||||
github.com/juju/retry v0.0.0-20180821225755-9058e192b216/go.mod h1:OohPQGsr4pnxwD5YljhQ+TZnuVRYpa5irjugL1Yuif4=
|
||||
github.com/juju/testing v0.0.0-20180402130637-44801989f0f7/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA=
|
||||
github.com/juju/testing v0.0.0-20190723135506-ce30eb24acd2/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA=
|
||||
github.com/juju/testing v0.0.0-20210302031854-2c7ee8570c07 h1:6QA3rIUc3TBPbv8zWa2KQ2TWn6gsn1EU0UhwRi6kOhA=
|
||||
github.com/juju/testing v0.0.0-20210302031854-2c7ee8570c07/go.mod h1:7lxZW0B50+xdGFkvhAb8bwAGt6IU87JB1H9w4t8MNVM=
|
||||
github.com/juju/utils v0.0.0-20180424094159-2000ea4ff043/go.mod h1:6/KLg8Wz/y2KVGWEpkK9vMNGkOnu4k/cqs8Z1fKjTOk=
|
||||
github.com/juju/utils v0.0.0-20200116185830-d40c2fe10647/go.mod h1:6/KLg8Wz/y2KVGWEpkK9vMNGkOnu4k/cqs8Z1fKjTOk=
|
||||
github.com/juju/utils/v2 v2.0.0-20200923005554-4646bfea2ef1/go.mod h1:fdlDtQlzundleLLz/ggoYinEt/LmnrpNKcNTABQATNI=
|
||||
github.com/juju/version v0.0.0-20161031051906-1f41e27e54f2/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U=
|
||||
github.com/juju/version v0.0.0-20180108022336-b64dbd566305/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U=
|
||||
github.com/juju/version v0.0.0-20191219164919-81c1be00b9a6/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U=
|
||||
github.com/julienschmidt/httprouter v1.1.1-0.20151013225520-77a895ad01eb/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||
github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
|
||||
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||
github.com/lunixbochs/vtclean v0.0.0-20160125035106-4fbf7632a2c6/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI=
|
||||
github.com/masterzen/azure-sdk-for-go v3.2.0-beta.0.20161014135628-ee4f0065d00c+incompatible/go.mod h1:mf8fjOu33zCqxUjuiU3I8S1lJMyEAlH+0F2+M5xl3hE=
|
||||
github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc=
|
||||
github.com/masterzen/winrm v0.0.0-20161014151040-7a535cd943fc/go.mod h1:CfZSN7zwz5gJiFhZJz49Uzk7mEBHIceWmbFmYx7Hf7E=
|
||||
github.com/masterzen/xmlpath v0.0.0-20140218185901-13f4951698ad/go.mod h1:A0zPC53iKKKcXYxr4ROjpQRQ5FgJXtelNdSmHHuq/tY=
|
||||
github.com/mattn/go-colorable v0.0.6/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
|
||||
github.com/mattn/go-isatty v0.0.0-20160806122752-66b8e73f3f5c/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
|
||||
github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U=
|
||||
github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8/go.mod h1:B1+S9LNcuMyLH/4HMTViQOJevkGiik3wW2AN9zb2fNQ=
|
||||
github.com/pingcap/check v0.0.0-20200212061837-5e12011dc712 h1:R8gStypOBmpnHEx1qi//SaqxJVI4inOqljg/Aj5/390=
|
||||
github.com/pingcap/check v0.0.0-20200212061837-5e12011dc712/go.mod h1:PYMCGwN0JHjoqGr3HrZoD+b8Tgx8bKnArhSq8YVzUMc=
|
||||
github.com/pingcap/errors v0.11.0 h1:DCJQB8jrHbQ1VVlMFIrbj2ApScNNotVmkSNplu2yUt4=
|
||||
github.com/pingcap/errors v0.11.0/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
|
||||
github.com/pingcap/log v0.0.0-20191012051959-b742a5d432e9 h1:AJD9pZYm72vMgPcQDww9rkZ1DnWfl0pXV3BOWlkYIjA=
|
||||
github.com/pingcap/log v0.0.0-20191012051959-b742a5d432e9/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8=
|
||||
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
|
||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM=
|
||||
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
|
||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
|
||||
go.uber.org/atomic v1.5.0 h1:OI5t8sDa1Or+q8AeE+yKeB/SDYioSHAgcVljj9JIETY=
|
||||
@ -32,33 +76,63 @@ go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/
|
||||
go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
|
||||
go.uber.org/multierr v1.4.0 h1:f3WCSC2KzAcBXGATIxAB1E2XuCpNU255wNKZ505qi3E=
|
||||
go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
|
||||
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4=
|
||||
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
|
||||
go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
|
||||
go.uber.org/zap v1.12.0 h1:dySoUQPFBGj6xwjmBzageVL8jGi8uxc6bEmJQjA06bw=
|
||||
go.uber.org/zap v1.12.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
|
||||
golang.org/x/crypto v0.0.0-20180214000028-650f4a345ab4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs=
|
||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
|
||||
golang.org/x/net v0.0.0-20180406214816-61147c48b25b/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037 h1:YyJpGZS1sBuBCzLAR1VEpK193GlqGZbnPFnPV/5Rsb4=
|
||||
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||
golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191107010934-f79515f33823 h1:akkRBeitX2EZP59KdtKw310CI4WGPCNPyrLbE7WZA8Y=
|
||||
golang.org/x/tools v0.0.0-20191107010934-f79515f33823/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20160105164936-4f90aeace3a2/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||
gopkg.in/errgo.v1 v1.0.0-20161222125816-442357a80af5/go.mod h1:u0ALmqvLRxLI95fkdCEWrE6mhWYZW1aMOJHp5YXLHTg=
|
||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||
gopkg.in/httprequest.v1 v1.1.1/go.mod h1:/CkavNL+g3qLOrpFHVrEx4NKepeqR4XTZWNj4sGGjz0=
|
||||
gopkg.in/mgo.v2 v2.0.0-20160818015218-f2b6f6c918c4/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
|
||||
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
||||
gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637/go.mod h1:BHsqpu/nsuzkT5BpiH1EMZPLyqSMM8JbIavyFACoFNk=
|
||||
gopkg.in/yaml.v2 v2.0.0-20170712054546-1be3d31502d6/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
|
||||
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||
honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM=
|
||||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
||||
launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM=
|
||||
launchpad.net/xmlpath v0.0.0-20130614043138-000000000004/go.mod h1:vqyExLOM3qBx7mvYRkoxjSCF945s0mbe7YynlKYXtsA=
|
||||
|
||||
@ -26,7 +26,8 @@ import (
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
"github.com/juju/errors"
|
||||
. "github.com/pingcap/check"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"github.com/pingcap/log"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -58,7 +59,7 @@ func (s *TestGracefulShutdownSuite) startTiDBWithoutPD(port int, statusPort int)
|
||||
fmt.Sprintf("-P=%d", port),
|
||||
fmt.Sprintf("--status=%d", statusPort),
|
||||
fmt.Sprintf("--log-file=%s/tidb%d.log", *tmpPath, port))
|
||||
log.Infof("starting tidb: %v", cmd)
|
||||
log.Info("starting tidb", zap.Any("cmd", cmd))
|
||||
err = cmd.Start()
|
||||
if err != nil {
|
||||
return nil, errors.Trace(err)
|
||||
@ -71,11 +72,11 @@ func (s *TestGracefulShutdownSuite) stopService(name string, cmd *exec.Cmd) (err
|
||||
if err = cmd.Process.Signal(os.Interrupt); err != nil {
|
||||
return errors.Trace(err)
|
||||
}
|
||||
log.Infof("service \"%s\" Interrupt", name)
|
||||
log.Info("service Interrupt", zap.String("name", name))
|
||||
if err = cmd.Wait(); err != nil {
|
||||
return errors.Trace(err)
|
||||
}
|
||||
log.Infof("service \"%s\" stopped gracefully", name)
|
||||
log.Info("service stopped gracefully", zap.String("name", name))
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -87,14 +88,22 @@ func (s *TestGracefulShutdownSuite) connectTiDB(port int) (db *sql.DB, err error
|
||||
for i := 0; i < 5; i++ {
|
||||
db, err = sql.Open("mysql", dsn)
|
||||
if err != nil {
|
||||
log.Warnf("open addr %v failed, retry count %d err %v", addr, i, err)
|
||||
log.Warn("open addr failed",
|
||||
zap.String("addr", addr),
|
||||
zap.Int("retry count", i),
|
||||
zap.Error(err),
|
||||
)
|
||||
continue
|
||||
}
|
||||
err = db.Ping()
|
||||
if err == nil {
|
||||
break
|
||||
}
|
||||
log.Warnf("ping addr %v failed, retry count %d err %v", addr, i, err)
|
||||
log.Warn("ping addr failed",
|
||||
zap.String("addr", addr),
|
||||
zap.Int("retry count", i),
|
||||
zap.Error(err),
|
||||
)
|
||||
|
||||
err = db.Close()
|
||||
if err != nil {
|
||||
@ -105,12 +114,16 @@ func (s *TestGracefulShutdownSuite) connectTiDB(port int) (db *sql.DB, err error
|
||||
sleepTime += sleepTime
|
||||
}
|
||||
if err != nil {
|
||||
log.Errorf("connect to server addr %v failed %v, take time %v", addr, err, time.Since(startTime))
|
||||
log.Error("connect to server addr failed",
|
||||
zap.String("addr", addr),
|
||||
zap.Duration("take time", time.Since(startTime)),
|
||||
zap.Error(err),
|
||||
)
|
||||
return nil, errors.Trace(err)
|
||||
}
|
||||
db.SetMaxOpenConns(10)
|
||||
|
||||
log.Infof("connect to server %s ok", addr)
|
||||
log.Info("connect to server ok", zap.String("addr", addr))
|
||||
return db, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user