diff --git a/DEPS.bzl b/DEPS.bzl index 45b0a249169ae..e6b4b5247b355 100644 --- a/DEPS.bzl +++ b/DEPS.bzl @@ -2206,13 +2206,6 @@ def go_deps(): sum = "h1:0Vihzu20St42/UDsvZGdNE6jak7oi/UOeMzwMPHkgFY=", version = "v3.2.0+incompatible", ) - go_repository( - name = "com_github_jarcoal_httpmock", - build_file_proto_mode = "disable", - importpath = "github.com/jarcoal/httpmock", - sum = "h1:gSvTxxFR/MEMfsGrvRbdfpRUMBStovlSRLw0Ep1bwwc=", - version = "v1.2.0", - ) go_repository( name = "com_github_jcmturner_aescts_v2", @@ -4123,8 +4116,8 @@ def go_deps(): name = "com_github_tikv_client_go_v2", build_file_proto_mode = "disable_global", importpath = "github.com/tikv/client-go/v2", - sum = "h1:XpdZrei86oIrRjXbqvlQh23TdHXVtSxWmsxxwy/Zgc0=", - version = "v2.0.7-0.20230328084104-ea13e9700259", + sum = "h1:lqlizij6n/v4jx1Ph2rLF0E/gRJUg7kz3VmO6P5Y1e0=", + version = "v2.0.7-0.20230406064257-1ec0ff5bf443", ) go_repository( name = "com_github_tikv_pd", diff --git a/executor/BUILD.bazel b/executor/BUILD.bazel index 4b05eb4299a4d..3b1f49f44752f 100644 --- a/executor/BUILD.bazel +++ b/executor/BUILD.bazel @@ -441,7 +441,6 @@ go_test( "//util/topsql/state", "@com_github_golang_protobuf//proto", "@com_github_gorilla_mux//:mux", - "@com_github_jarcoal_httpmock//:httpmock", "@com_github_pingcap_errors//:errors", "@com_github_pingcap_failpoint//:failpoint", "@com_github_pingcap_fn//:fn", diff --git a/executor/infoschema_reader.go b/executor/infoschema_reader.go index ba0fe428d382e..0da1792d2a2df 100644 --- a/executor/infoschema_reader.go +++ b/executor/infoschema_reader.go @@ -20,9 +20,7 @@ import ( "encoding/hex" "encoding/json" "fmt" - "io" "math" - "net/http" "strconv" "strings" "time" @@ -30,6 +28,7 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/failpoint" "github.com/pingcap/kvproto/pkg/deadlock" + "github.com/pingcap/kvproto/pkg/kvrpcpb" rmpb "github.com/pingcap/kvproto/pkg/resource_manager" "github.com/pingcap/tidb/ddl/label" "github.com/pingcap/tidb/ddl/placement" @@ -43,7 +42,6 @@ import ( "github.com/pingcap/tidb/parser/charset" "github.com/pingcap/tidb/parser/model" "github.com/pingcap/tidb/parser/mysql" - "github.com/pingcap/tidb/parser/terror" plannercore "github.com/pingcap/tidb/planner/core" "github.com/pingcap/tidb/privilege" "github.com/pingcap/tidb/privilege/privileges" @@ -73,6 +71,8 @@ import ( "github.com/pingcap/tidb/util/sqlexec" "github.com/pingcap/tidb/util/stringutil" "github.com/pingcap/tidb/util/syncutil" + "github.com/tikv/client-go/v2/tikv" + "github.com/tikv/client-go/v2/tikvrpc" "github.com/tikv/client-go/v2/txnkv/txnlock" "go.uber.org/zap" "golang.org/x/exp/slices" @@ -2989,7 +2989,7 @@ type TiFlashSystemTableRetriever struct { outputCols []*model.ColumnInfo instanceCount int instanceIdx int - instanceInfos []tiflashInstanceInfo + instanceIds []string rowIdx int retrieved bool initialized bool @@ -3012,7 +3012,7 @@ func (e *TiFlashSystemTableRetriever) retrieve(ctx context.Context, sctx session } for { - rows, err := e.dataForTiFlashSystemTables(sctx, e.extractor.TiDBDatabases, e.extractor.TiDBTables) + rows, err := e.dataForTiFlashSystemTables(ctx, sctx, e.extractor.TiDBDatabases, e.extractor.TiDBTables) if err != nil { return nil, err } @@ -3022,11 +3022,6 @@ func (e *TiFlashSystemTableRetriever) retrieve(ctx context.Context, sctx session } } -type tiflashInstanceInfo struct { - id string - url string -} - func (e *TiFlashSystemTableRetriever) initialize(sctx sessionctx.Context, tiflashInstances set.StringSet) error { storeInfo, err := infoschema.GetStoreServerInfo(sctx) if err != nil { @@ -3045,53 +3040,8 @@ func (e *TiFlashSystemTableRetriever) initialize(sctx sessionctx.Context, tiflas if len(hostAndStatusPort) != 2 { return errors.Errorf("node status addr: %s format illegal", info.StatusAddr) } - // fetch tiflash config - configURL := fmt.Sprintf("%s://%s/config", util.InternalHTTPSchema(), info.StatusAddr) - resp, err := util.InternalHTTPClient().Get(configURL) - if err != nil { - sctx.GetSessionVars().StmtCtx.AppendWarning(err) - continue - } - if resp.StatusCode != http.StatusOK { - return errors.Errorf("request %s failed: %s", configURL, resp.Status) - } - // parse http_port or https_port from the fetched config - var nestedConfig map[string]interface{} - if err = json.NewDecoder(resp.Body).Decode(&nestedConfig); err != nil { - return err - } - if engineStoreConfig, ok := nestedConfig["engine-store"]; ok { - foundPort := false - var port interface{} - portProtocol := "" - if httpPort, ok := engineStoreConfig.(map[string]interface{})["http_port"]; ok { - foundPort = true - port = httpPort - portProtocol = "http" - } else if httpsPort, ok := engineStoreConfig.(map[string]interface{})["https_port"]; ok { - foundPort = true - port = httpsPort - portProtocol = "https" - } - if !foundPort { - return errors.Errorf("engine-store.http_port/https_port not found in server %s", info.Address) - } - switch portValue := port.(type) { - case float64: - e.instanceInfos = append(e.instanceInfos, tiflashInstanceInfo{ - id: info.Address, - url: fmt.Sprintf("%s://%s:%d", portProtocol, hostAndStatusPort[0], int(portValue)), - }) - e.instanceCount += 1 - default: - return errors.Errorf("engine-store.http_port value(%p) unexpected in server %s", port, info.Address) - } - } else { - return errors.Errorf("engine-store config not found in server %s", info.Address) - } - if err = resp.Body.Close(); err != nil { - return err - } + e.instanceIds = append(e.instanceIds, info.Address) + e.instanceCount += 1 } e.initialized = true return nil @@ -3107,7 +3057,7 @@ type tiFlashSQLExecuteResponse struct { Data [][]interface{} `json:"data"` } -func (e *TiFlashSystemTableRetriever) dataForTiFlashSystemTables(ctx sessionctx.Context, tidbDatabases string, tidbTables string) ([][]types.Datum, error) { +func (e *TiFlashSystemTableRetriever) dataForTiFlashSystemTables(ctx context.Context, sctx sessionctx.Context, tidbDatabases string, tidbTables string) ([][]types.Datum, error) { maxCount := 1024 targetTable := strings.ToLower(strings.Replace(e.table.Name.O, "TIFLASH", "DT", 1)) var filters []string @@ -3122,29 +3072,33 @@ func (e *TiFlashSystemTableRetriever) dataForTiFlashSystemTables(ctx sessionctx. sql = fmt.Sprintf("%s WHERE %s", sql, strings.Join(filters, " AND ")) } sql = fmt.Sprintf("%s LIMIT %d, %d", sql, e.rowIdx, maxCount) - instanceInfo := e.instanceInfos[e.instanceIdx] - url := instanceInfo.url - req, err := http.NewRequest(http.MethodGet, url, nil) - if err != nil { - return nil, errors.Trace(err) + request := tikvrpc.Request{ + Type: tikvrpc.CmdGetTiFlashSystemTable, + StoreTp: tikvrpc.TiFlash, + Req: &kvrpcpb.TiFlashSystemTableRequest{ + Sql: sql, + }, } - q := req.URL.Query() - q.Add("query", sql) - q.Add("default_format", "JSONCompact") - req.URL.RawQuery = q.Encode() - resp, err := util.InternalHTTPClient().Do(req) - if err != nil { - return nil, errors.Trace(err) + + store := sctx.GetStore() + tikvStore, ok := store.(tikv.Storage) + if !ok { + return nil, errors.New("Get tiflash system tables can only run with tikv compatible storage") } - body, err := io.ReadAll(resp.Body) - terror.Log(resp.Body.Close()) + // send request to tiflash, timeout is 1s + instanceID := e.instanceIds[e.instanceIdx] + resp, err := tikvStore.GetTiKVClient().SendRequest(ctx, instanceID, &request, time.Second) if err != nil { return nil, errors.Trace(err) } var result tiFlashSQLExecuteResponse - err = json.Unmarshal(body, &result) - if err != nil { - return nil, errors.Wrapf(err, "Failed to decode JSON from TiFlash") + if tiflashResp, ok := resp.Resp.(*kvrpcpb.TiFlashSystemTableResponse); ok { + err = json.Unmarshal(tiflashResp.Data, &result) + if err != nil { + return nil, errors.Wrapf(err, "Failed to decode JSON from TiFlash") + } + } else { + return nil, errors.Errorf("Unexpected response type: %T", resp.Resp) } // Map result columns back to our columns. It is possible that some columns cannot be @@ -3194,7 +3148,7 @@ func (e *TiFlashSystemTableRetriever) dataForTiFlashSystemTables(ctx sessionctx. return nil, errors.Errorf("Meet column of unknown type %v", column) } } - outputRow[len(e.outputCols)-1].SetString(instanceInfo.id, mysql.DefaultCollationName) + outputRow[len(e.outputCols)-1].SetString(instanceID, mysql.DefaultCollationName) outputRows = append(outputRows, outputRow) } e.rowIdx += len(outputRows) diff --git a/executor/infoschema_reader_test.go b/executor/infoschema_reader_test.go index ae625e7af0f60..cae75d72c35e0 100644 --- a/executor/infoschema_reader_test.go +++ b/executor/infoschema_reader_test.go @@ -15,6 +15,7 @@ package executor_test import ( + "context" "fmt" "os" "strconv" @@ -22,17 +23,20 @@ import ( "testing" "time" - "github.com/jarcoal/httpmock" "github.com/pingcap/failpoint" + "github.com/pingcap/kvproto/pkg/kvrpcpb" "github.com/pingcap/tidb/domain/infosync" "github.com/pingcap/tidb/executor" "github.com/pingcap/tidb/parser/auth" "github.com/pingcap/tidb/parser/mysql" "github.com/pingcap/tidb/sessionctx/variable" "github.com/pingcap/tidb/statistics/handle" + "github.com/pingcap/tidb/store/mockstore" "github.com/pingcap/tidb/testkit" "github.com/pingcap/tidb/util/stringutil" "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/tikv" + "github.com/tikv/client-go/v2/tikvrpc" ) func TestInspectionTables(t *testing.T) { @@ -647,9 +651,6 @@ func TestSequences(t *testing.T) { } func TestTiFlashSystemTableWithTiFlashV620(t *testing.T) { - httpmock.Activate() - defer httpmock.DeactivateAndReset() - instances := []string{ "tiflash,127.0.0.1:3933,127.0.0.1:7777,,", "tikv,127.0.0.1:11080,127.0.0.1:10080,,", @@ -659,26 +660,25 @@ func TestTiFlashSystemTableWithTiFlashV620(t *testing.T) { require.NoError(t, failpoint.Enable(fpName, fpExpr)) defer func() { require.NoError(t, failpoint.Disable(fpName)) }() - httpmock.RegisterResponder("GET", "http://127.0.0.1:7777/config", - httpmock.NewStringResponder(200, ` -{ - "raftstore-proxy": {}, - "engine-store":{ - "http_port":8123, - "tcp_port":9000 - } -} - `)) - - data, err := os.ReadFile("testdata/tiflash_v620_dt_segments.json") - require.NoError(t, err) - httpmock.RegisterResponder("GET", "http://127.0.0.1:8123?default_format=JSONCompact&query=SELECT+%2A+FROM+system.dt_segments+LIMIT+0%2C+1024", httpmock.NewBytesResponder(200, data)) - - data, err = os.ReadFile("testdata/tiflash_v620_dt_tables.json") - require.NoError(t, err) - httpmock.RegisterResponder("GET", "http://127.0.0.1:8123?default_format=JSONCompact&query=SELECT+%2A+FROM+system.dt_tables+LIMIT+0%2C+1024", httpmock.NewBytesResponder(200, data)) + mocker := newGetTiFlashSystemTableRequestMocker(t) + mocker.MockQuery(`SELECT * FROM system.dt_segments LIMIT 0, 1024`, func(req *kvrpcpb.TiFlashSystemTableRequest) (*kvrpcpb.TiFlashSystemTableResponse, error) { + require.EqualValues(t, req.Sql, "SELECT * FROM system.dt_segments LIMIT 0, 1024") + data, err := os.ReadFile("testdata/tiflash_v620_dt_segments.json") + require.NoError(t, err) + return &kvrpcpb.TiFlashSystemTableResponse{ + Data: data, + }, nil + }) + mocker.MockQuery(`SELECT * FROM system.dt_tables LIMIT 0, 1024`, func(req *kvrpcpb.TiFlashSystemTableRequest) (*kvrpcpb.TiFlashSystemTableResponse, error) { + require.EqualValues(t, req.Sql, "SELECT * FROM system.dt_tables LIMIT 0, 1024") + data, err := os.ReadFile("testdata/tiflash_v620_dt_tables.json") + require.NoError(t, err) + return &kvrpcpb.TiFlashSystemTableResponse{ + Data: data, + }, nil + }) - store := testkit.CreateMockStore(t) + store := testkit.CreateMockStore(t, withMockTiFlash(1), mocker.AsOpt()) tk := testkit.NewTestKit(t, store) tk.MustQuery("select * from information_schema.TIFLASH_SEGMENTS;").Check(testkit.Rows( "db_1 t_10 mysql tables_priv 10 0 1 [-9223372036854775808,9223372036854775807) 0 0 0 2032 127.0.0.1:3933", @@ -696,9 +696,6 @@ func TestTiFlashSystemTableWithTiFlashV620(t *testing.T) { } func TestTiFlashSystemTableWithTiFlashV630(t *testing.T) { - httpmock.Activate() - defer httpmock.DeactivateAndReset() - instances := []string{ "tiflash,127.0.0.1:3933,127.0.0.1:7777,,", "tikv,127.0.0.1:11080,127.0.0.1:10080,,", @@ -708,22 +705,17 @@ func TestTiFlashSystemTableWithTiFlashV630(t *testing.T) { require.NoError(t, failpoint.Enable(fpName, fpExpr)) defer func() { require.NoError(t, failpoint.Disable(fpName)) }() - httpmock.RegisterResponder("GET", "http://127.0.0.1:7777/config", - httpmock.NewStringResponder(200, ` -{ - "raftstore-proxy": {}, - "engine-store":{ - "http_port":8123, - "tcp_port":9000 - } -} - `)) - - data, err := os.ReadFile("testdata/tiflash_v630_dt_segments.json") - require.NoError(t, err) - httpmock.RegisterResponder("GET", "http://127.0.0.1:8123?default_format=JSONCompact&query=SELECT+%2A+FROM+system.dt_segments+LIMIT+0%2C+1024", httpmock.NewBytesResponder(200, data)) + mocker := newGetTiFlashSystemTableRequestMocker(t) + mocker.MockQuery(`SELECT * FROM system.dt_segments LIMIT 0, 1024`, func(req *kvrpcpb.TiFlashSystemTableRequest) (*kvrpcpb.TiFlashSystemTableResponse, error) { + require.EqualValues(t, req.Sql, "SELECT * FROM system.dt_segments LIMIT 0, 1024") + data, err := os.ReadFile("testdata/tiflash_v630_dt_segments.json") + require.NoError(t, err) + return &kvrpcpb.TiFlashSystemTableResponse{ + Data: data, + }, nil + }) - store := testkit.CreateMockStore(t) + store := testkit.CreateMockStore(t, withMockTiFlash(1), mocker.AsOpt()) tk := testkit.NewTestKit(t, store) tk.MustQuery("select * from information_schema.TIFLASH_SEGMENTS;").Check(testkit.Rows( "db_1 t_10 mysql tables_priv 10 0 1 [-9223372036854775808,9223372036854775807) 0 0 0 0 0 0 0 2 0 0 0 0 0 2032 3 0 0 1 1 0 0 0 0 127.0.0.1:3933", @@ -740,9 +732,6 @@ func TestTiFlashSystemTableWithTiFlashV630(t *testing.T) { } func TestTiFlashSystemTableWithTiFlashV640(t *testing.T) { - httpmock.Activate() - defer httpmock.DeactivateAndReset() - instances := []string{ "tiflash,127.0.0.1:3933,127.0.0.1:7777,,", "tikv,127.0.0.1:11080,127.0.0.1:10080,,", @@ -752,22 +741,17 @@ func TestTiFlashSystemTableWithTiFlashV640(t *testing.T) { require.NoError(t, failpoint.Enable(fpName, fpExpr)) defer func() { require.NoError(t, failpoint.Disable(fpName)) }() - httpmock.RegisterResponder("GET", "http://127.0.0.1:7777/config", - httpmock.NewStringResponder(200, ` -{ - "raftstore-proxy": {}, - "engine-store":{ - "http_port":8123, - "tcp_port":9000 - } -} - `)) - - data, err := os.ReadFile("testdata/tiflash_v640_dt_tables.json") - require.NoError(t, err) - httpmock.RegisterResponder("GET", "http://127.0.0.1:8123?default_format=JSONCompact&query=SELECT+%2A+FROM+system.dt_tables+LIMIT+0%2C+1024", httpmock.NewBytesResponder(200, data)) + mocker := newGetTiFlashSystemTableRequestMocker(t) + mocker.MockQuery(`SELECT * FROM system.dt_tables LIMIT 0, 1024`, func(req *kvrpcpb.TiFlashSystemTableRequest) (*kvrpcpb.TiFlashSystemTableResponse, error) { + require.EqualValues(t, req.Sql, "SELECT * FROM system.dt_tables LIMIT 0, 1024") + data, err := os.ReadFile("testdata/tiflash_v640_dt_tables.json") + require.NoError(t, err) + return &kvrpcpb.TiFlashSystemTableResponse{ + Data: data, + }, nil + }) - store := testkit.CreateMockStore(t) + store := testkit.CreateMockStore(t, withMockTiFlash(1), mocker.AsOpt()) tk := testkit.NewTestKit(t, store) tk.MustQuery("select * from information_schema.TIFLASH_TABLES;").Check(testkit.Rows( "db_70 t_135 tpcc customer 135 0 4 3528714 2464079200 0 0.002329177144988231 1 0 929227 0.16169850346757514 0 8128 882178.5 616019800 4 8219 5747810 2054.75 1436952.5 0 4 3520495 2458331390 1601563417 880123.75 614582847.5 24 8 6 342.4583333333333 239492.08333333334 482 120.5 7303.9315352697095 5100272.593360996 0 0 0 0 0 0 0 0 0 0 127.0.0.1:3933", @@ -882,3 +866,45 @@ func TestNullColumns(t *testing.T) { tk.MustQuery("select * from information_schema.columns where TABLE_SCHEMA = 'test' and TABLE_NAME = 'v_test';"). Check(testkit.Rows("def test v_test type 1 YES binary 0 0 binary(0) select,insert,update,references ")) } + +// Code below are helper utilities for the test cases. + +type getTiFlashSystemTableRequestMocker struct { + tikv.Client + t *testing.T + handlers map[string]func(req *kvrpcpb.TiFlashSystemTableRequest) (*kvrpcpb.TiFlashSystemTableResponse, error) +} + +func (client *getTiFlashSystemTableRequestMocker) SendRequest(ctx context.Context, addr string, req *tikvrpc.Request, timeout time.Duration) (*tikvrpc.Response, error) { + if req.Type == tikvrpc.CmdGetTiFlashSystemTable { + if handler, ok := client.handlers[req.Req.(*kvrpcpb.TiFlashSystemTableRequest).Sql]; ok { + resp, err := handler(req.GetTiFlashSystemTable()) + if err != nil { + return nil, err + } + return &tikvrpc.Response{Resp: resp}, nil + } + // If we enter here, it means no handler is matching. We should fail! + require.Fail(client.t, fmt.Sprintf("Received request %s but no matching handler, maybe caused by unexpected query", req.Req.(*kvrpcpb.TiFlashSystemTableRequest).Sql)) + } + return client.Client.SendRequest(ctx, addr, req, timeout) +} + +func (client *getTiFlashSystemTableRequestMocker) MockQuery(query string, fn func(req *kvrpcpb.TiFlashSystemTableRequest) (*kvrpcpb.TiFlashSystemTableResponse, error)) *getTiFlashSystemTableRequestMocker { + client.handlers[query] = fn + return client +} + +func (client *getTiFlashSystemTableRequestMocker) AsOpt() mockstore.MockTiKVStoreOption { + return mockstore.WithClientHijacker(func(kvClient tikv.Client) tikv.Client { + client.Client = kvClient + return client + }) +} + +func newGetTiFlashSystemTableRequestMocker(t *testing.T) *getTiFlashSystemTableRequestMocker { + return &getTiFlashSystemTableRequestMocker{ + handlers: make(map[string]func(req *kvrpcpb.TiFlashSystemTableRequest) (*kvrpcpb.TiFlashSystemTableResponse, error), 0), + t: t, + } +} diff --git a/go.mod b/go.mod index 73a268075848d..793ce08301aa4 100644 --- a/go.mod +++ b/go.mod @@ -54,7 +54,6 @@ require ( github.com/gostaticanalysis/forcetypeassert v0.1.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/iancoleman/strcase v0.2.0 - github.com/jarcoal/httpmock v1.2.0 github.com/jedib0t/go-pretty/v6 v6.2.2 github.com/jingyugao/rowserrcheck v1.1.1 github.com/joho/sqltocsv v0.0.0-20210428211105-a6d6801d59df @@ -93,7 +92,7 @@ require ( github.com/stretchr/testify v1.8.2 github.com/tdakkota/asciicheck v0.2.0 github.com/tiancaiamao/appdash v0.0.0-20181126055449-889f96f722a2 - github.com/tikv/client-go/v2 v2.0.7-0.20230328084104-ea13e9700259 + github.com/tikv/client-go/v2 v2.0.7-0.20230406064257-1ec0ff5bf443 github.com/tikv/pd/client v0.0.0-20230329114254-1948c247c2b1 github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e github.com/twmb/murmur3 v1.1.6 diff --git a/go.sum b/go.sum index 914543f81ece1..6026f5f048889 100644 --- a/go.sum +++ b/go.sum @@ -537,8 +537,6 @@ github.com/iris-contrib/i18n v0.0.0-20171121225848-987a633949d0/go.mod h1:pMCz62 github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= github.com/jackc/pgx v3.2.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= -github.com/jarcoal/httpmock v1.2.0 h1:gSvTxxFR/MEMfsGrvRbdfpRUMBStovlSRLw0Ep1bwwc= -github.com/jarcoal/httpmock v1.2.0/go.mod h1:oCoTsnAz4+UoOUIf5lJOWV2QQIW5UoeUI6aM2YnWAZk= github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8= github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= github.com/jcmturner/dnsutils/v2 v2.0.0 h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo= @@ -668,7 +666,6 @@ github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpe github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/maxatome/go-testdeep v1.11.0 h1:Tgh5efyCYyJFGUYiT0qxBSIDeXw0F5zSoatlou685kk= github.com/mediocregopher/mediocre-go-lib v0.0.0-20181029021733-cb65787f37ed/go.mod h1:dSsfyI2zABAdhcbvkXqgxOxrCsbYeHCPgrZkku60dSg= github.com/mediocregopher/radix/v3 v3.3.0/go.mod h1:EmfVyvspXz1uZEyPBMyGK+kjWiKQGvsUt6O3Pj+LDCQ= github.com/mgechev/revive v1.3.1 h1:OlQkcH40IB2cGuprTPcjB0iIUddgVZgGmDX3IAMR8D4= @@ -948,8 +945,8 @@ github.com/tiancaiamao/appdash v0.0.0-20181126055449-889f96f722a2 h1:mbAskLJ0oJf github.com/tiancaiamao/appdash v0.0.0-20181126055449-889f96f722a2/go.mod h1:2PfKggNGDuadAa0LElHrByyrz4JPZ9fFx6Gs7nx7ZZU= github.com/tiancaiamao/gp v0.0.0-20221230034425-4025bc8a4d4a h1:J/YdBZ46WKpXsxsW93SG+q0F8KI+yFrcIDT4c/RNoc4= github.com/tiancaiamao/gp v0.0.0-20221230034425-4025bc8a4d4a/go.mod h1:h4xBhSNtOeEosLJ4P7JyKXX7Cabg7AVkWCK5gV2vOrM= -github.com/tikv/client-go/v2 v2.0.7-0.20230328084104-ea13e9700259 h1:XpdZrei86oIrRjXbqvlQh23TdHXVtSxWmsxxwy/Zgc0= -github.com/tikv/client-go/v2 v2.0.7-0.20230328084104-ea13e9700259/go.mod h1:J6zUseSVj8p+Uyr1QQugZsPuksazVE1P4lbhSPISQ/o= +github.com/tikv/client-go/v2 v2.0.7-0.20230406064257-1ec0ff5bf443 h1:lqlizij6n/v4jx1Ph2rLF0E/gRJUg7kz3VmO6P5Y1e0= +github.com/tikv/client-go/v2 v2.0.7-0.20230406064257-1ec0ff5bf443/go.mod h1:9JNUWtHN8cx8eynHZ9xzdPi5YY6aiN1ILQyhfPUBcMo= github.com/tikv/pd/client v0.0.0-20230329114254-1948c247c2b1 h1:bzlSSzw+6qTwPs8pMcPI1bt27TAOhSdAEwdPCz6eBlg= github.com/tikv/pd/client v0.0.0-20230329114254-1948c247c2b1/go.mod h1:3cTcfo8GRA2H/uSttqA3LvMfMSHVBJaXk3IgkFXFVxo= github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e h1:MV6KaVu/hzByHP0UvJ4HcMGE/8a6A4Rggc/0wx2AvJo=