From d973a14d26cda267bc54a1c27b3cc623204c3bed Mon Sep 17 00:00:00 2001 From: Ping Yu Date: Tue, 4 Aug 2026 10:09:00 +0800 Subject: [PATCH 01/12] cli: add GC safepoint verifier Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus Signed-off-by: Ping Yu --- cmd/cdc/cli/cli_unsafe.go | 1 + cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go | 183 ++++++++++++++++++ .../cli_unsafe_verify_gc_safepoint_test.go | 178 +++++++++++++++++ 3 files changed, 362 insertions(+) create mode 100644 cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go create mode 100644 cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go diff --git a/cmd/cdc/cli/cli_unsafe.go b/cmd/cdc/cli/cli_unsafe.go index 780812568c..7eac32943c 100644 --- a/cmd/cdc/cli/cli_unsafe.go +++ b/cmd/cdc/cli/cli_unsafe.go @@ -65,6 +65,7 @@ func newCmdUnsafe(f factory.Factory) *cobra.Command { command.AddCommand(newCmdShowMetadata(f)) command.AddCommand(newCmdDeleteServiceGcSafepoint(f, commonOptions)) command.AddCommand(newCmdResolveLock(f)) + command.AddCommand(newCmdVerifyGCSafepoint(f)) return command } diff --git a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go new file mode 100644 index 0000000000..6c1c407ad7 --- /dev/null +++ b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go @@ -0,0 +1,183 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// See the License for the specific language governing permissions and +// limitations under the License. + +package cli + +import ( + "context" + "fmt" + "net/url" + "time" + + "github.com/pingcap/kvproto/pkg/keyspacepb" + "github.com/pingcap/ticdc/cmd/cdc/factory" + "github.com/pingcap/ticdc/cmd/util" + "github.com/pingcap/ticdc/pkg/common" + cerrors "github.com/pingcap/ticdc/pkg/errors" + "github.com/pingcap/ticdc/pkg/security" + tidbkv "github.com/pingcap/tidb/pkg/kv" + "github.com/pingcap/tidb/pkg/meta" + "github.com/pingcap/tidb/pkg/store/driver" + "github.com/spf13/cobra" + tikvconfig "github.com/tikv/client-go/v2/config" + "github.com/tikv/client-go/v2/oracle" + pdgc "github.com/tikv/pd/client/clients/gc" +) + +const ( + verifyGCSafepointTTLSeconds = int64(600) + verifyGCSafepointCleanupTTL = 10 * time.Second +) + +type verifyGCSafepointPDClient interface { + GetTS(ctx context.Context) (physical int64, logical int64, err error) + LoadKeyspace(ctx context.Context, keyspace string) (*keyspacepb.KeyspaceMeta, error) + Close() +} + +type verifyGCSafepointOptions struct { + keyspace string + pdClient verifyGCSafepointPDClient + legacyClient pdgc.LegacyClientV2 + listDatabases func(ctx context.Context, keyspace string, snapshotTS uint64) (int, error) +} + +func (o *verifyGCSafepointOptions) addFlags(cmd *cobra.Command) { + cmd.Flags().StringVarP(&o.keyspace, "keyspace", "k", "", "Keyspace to verify") + _ = cmd.MarkFlagRequired("keyspace") +} + +func (o *verifyGCSafepointOptions) complete(f factory.Factory) error { + pdClient, err := f.PdClient() + if err != nil { + return err + } + legacyClient, ok := pdClient.(pdgc.LegacyClientV2) + if !ok { + pdClient.Close() + return cerrors.ErrUpdateServiceSafepointFailed.GenWithStackByArgs("PD client does not support LegacyClientV2") + } + + o.pdClient = pdClient + o.legacyClient = legacyClient + o.listDatabases = func(ctx context.Context, keyspace string, snapshotTS uint64) (int, error) { + return listDatabasesAtSnapshot(ctx, f.GetPdAddr(), f.GetCredential(), keyspace, snapshotTS) + } + return nil +} + +func (o *verifyGCSafepointOptions) run(cmd *cobra.Command) (runErr error) { + defer o.pdClient.Close() + ctx := cmd.Context() + keyspaceMeta, err := o.pdClient.LoadKeyspace(ctx, o.keyspace) + if err != nil { + return cerrors.WrapError(cerrors.ErrLoadKeyspaceFailed, err) + } + + physical, logical, err := o.pdClient.GetTS(ctx) + if err != nil { + return cerrors.WrapError(cerrors.ErrPDEtcdAPIError, err) + } + snapshotTS := oracle.ComposeTS(physical, logical) + serviceID := fmt.Sprintf("ticdc-gc-safepoint-verifier-%d", snapshotTS) + requestedSafePoint := snapshotTS + 1 + minSafePoint, err := o.legacyClient.SetServiceSafePointV2( + ctx, keyspaceMeta.Id, serviceID, verifyGCSafepointTTLSeconds, requestedSafePoint, + ) + if err != nil { + return cerrors.WrapError(cerrors.ErrUpdateServiceSafepointFailed, err) + } + + defer func() { + cleanupCtx, cancel := context.WithTimeout(context.Background(), verifyGCSafepointCleanupTTL) + defer cancel() + _, cleanupErr := o.legacyClient.DeleteServiceSafePointV2(cleanupCtx, keyspaceMeta.Id, serviceID) + if cleanupErr == nil { + return + } + cleanupErr = cerrors.WrapError(cerrors.ErrDeleteServiceSafepointFailed, cleanupErr) + if runErr == nil { + runErr = cleanupErr + return + } + runErr = cerrors.Annotatef(runErr, "temporary service safepoint cleanup also failed: %v", cleanupErr) + }() + if minSafePoint > requestedSafePoint { + return cerrors.Annotatef( + cerrors.ErrUpdateServiceSafepointFailed.GenWithStackByArgs(), + "minimum service safepoint %d exceeds requested safepoint %d", + minSafePoint, + requestedSafePoint, + ) + } + + databaseCount, err := o.listDatabases(ctx, o.keyspace, snapshotTS) + if err != nil { + return err + } + cmd.Printf("GC safepoint and ListDatabases verified, snapshot-ts: %d, databases: %d\n", snapshotTS, databaseCount) + return nil +} + +func listDatabasesAtSnapshot( + ctx context.Context, + pdAddr string, + credential *security.Credential, + keyspace string, + snapshotTS uint64, +) (int, error) { + pdURLs, err := common.NewURLsValue(pdAddr) + if err != nil { + return 0, cerrors.WrapError(cerrors.ErrNewStore, err) + } + tiURL := &url.URL{Scheme: "tikv", Host: pdURLs.HostString()} + query := tiURL.Query() + query.Set("disableGC", "true") + query.Set("keyspaceName", keyspace) + tiURL.RawQuery = query.Encode() + + securityConfig := tikvconfig.Security{ + ClusterSSLCA: credential.CAPath, + ClusterSSLCert: credential.CertPath, + ClusterSSLKey: credential.KeyPath, + ClusterVerifyCN: credential.CertAllowedCN, + } + tiStore, err := (&driver.TiKVDriver{}).OpenWithOptions( + tiURL.String(), driver.WithSecurity(securityConfig), + ) + if err != nil { + return 0, cerrors.WrapError(cerrors.ErrNewStore, err) + } + defer func() { _ = tiStore.Close() }() + + databases, err := meta.NewReader(tiStore.GetSnapshot(tidbkv.NewVersion(snapshotTS))).ListDatabases() + if err != nil { + return 0, cerrors.WrapError(cerrors.ErrMetaListDatabases, err) + } + return len(databases), nil +} + +func newCmdVerifyGCSafepoint(f factory.Factory) *cobra.Command { + o := &verifyGCSafepointOptions{} + command := &cobra.Command{ + Use: "verify-gc-safepoint", + Short: "Verify keyspace GC safepoint protection by listing databases at a protected snapshot", + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, _ []string) { + util.CheckErr(o.complete(f)) + util.CheckErr(o.run(cmd)) + }, + } + o.addFlags(command) + return command +} diff --git a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go new file mode 100644 index 0000000000..f2c1272851 --- /dev/null +++ b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go @@ -0,0 +1,178 @@ +// Copyright 2026 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// See the License for the specific language governing permissions and +// limitations under the License. + +package cli + +import ( + "bytes" + "context" + stderrors "errors" + "testing" + + "github.com/pingcap/kvproto/pkg/keyspacepb" + cerrors "github.com/pingcap/ticdc/pkg/errors" + "github.com/spf13/cobra" + "github.com/stretchr/testify/require" + "github.com/tikv/client-go/v2/oracle" +) + +type verifyGCSafepointTestPDClient struct { + physical int64 + logical int64 + keyspaceID uint32 + setServiceID string + setKeyspaceID uint32 + setTTL int64 + setSafePoint uint64 + minSafePoint uint64 + deleteServiceID string + deleteKeyspaceID uint32 + deleteContextErr error + deleteErr error + closed bool +} + +func (c *verifyGCSafepointTestPDClient) GetTS(context.Context) (int64, int64, error) { + return c.physical, c.logical, nil +} + +func (c *verifyGCSafepointTestPDClient) LoadKeyspace(context.Context, string) (*keyspacepb.KeyspaceMeta, error) { + return &keyspacepb.KeyspaceMeta{Id: c.keyspaceID}, nil +} + +func (*verifyGCSafepointTestPDClient) GetMinServiceSafePointV2(context.Context, uint32) (uint64, error) { + return 0, nil +} + +func (c *verifyGCSafepointTestPDClient) SetServiceSafePointV2( + _ context.Context, keyspaceID uint32, serviceID string, ttl int64, safePoint uint64, +) (uint64, error) { + c.setKeyspaceID = keyspaceID + c.setServiceID = serviceID + c.setTTL = ttl + c.setSafePoint = safePoint + if c.minSafePoint != 0 { + return c.minSafePoint, nil + } + return safePoint, nil +} + +func (c *verifyGCSafepointTestPDClient) DeleteServiceSafePointV2( + ctx context.Context, keyspaceID uint32, serviceID string, +) (uint64, error) { + c.deleteKeyspaceID = keyspaceID + c.deleteServiceID = serviceID + c.deleteContextErr = ctx.Err() + return 0, c.deleteErr +} + +func (c *verifyGCSafepointTestPDClient) Close() { + c.closed = true +} + +func TestVerifyGCSafepointRun(t *testing.T) { + t.Run("success", func(t *testing.T) { + pdClient := &verifyGCSafepointTestPDClient{ + physical: 1000, + logical: 7, + keyspaceID: 42, + } + snapshotTS := oracle.ComposeTS(pdClient.physical, pdClient.logical) + o := &verifyGCSafepointOptions{ + keyspace: "essential-v1", + pdClient: pdClient, + legacyClient: pdClient, + listDatabases: func(_ context.Context, keyspace string, ts uint64) (int, error) { + require.Equal(t, "essential-v1", keyspace) + require.Equal(t, snapshotTS, ts) + return 3, nil + }, + } + cmd := &cobra.Command{} + output := new(bytes.Buffer) + cmd.SetOut(output) + + require.NoError(t, o.run(cmd)) + require.Equal(t, snapshotTS+1, pdClient.setSafePoint) + require.Equal(t, uint32(42), pdClient.setKeyspaceID) + require.Equal(t, verifyGCSafepointTTLSeconds, pdClient.setTTL) + require.Equal(t, pdClient.setServiceID, pdClient.deleteServiceID) + require.Equal(t, uint32(42), pdClient.deleteKeyspaceID) + require.NoError(t, pdClient.deleteContextErr) + require.True(t, pdClient.closed) + require.Contains(t, output.String(), "databases: 3") + }) + + t.Run("cleanup uses fresh context", func(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + pdClient := &verifyGCSafepointTestPDClient{physical: 1000, keyspaceID: 42} + o := &verifyGCSafepointOptions{ + keyspace: "essential-v1", + pdClient: pdClient, + legacyClient: pdClient, + listDatabases: func(context.Context, string, uint64) (int, error) { + cancel() + return 0, cerrors.WrapError(cerrors.ErrMetaListDatabases, stderrors.New("snapshot read failed")) + }, + } + cmd := &cobra.Command{} + cmd.SetContext(ctx) + + err := o.run(cmd) + require.ErrorContains(t, err, "meta store list databases") + require.NoError(t, pdClient.deleteContextErr) + require.True(t, pdClient.closed) + }) + + t.Run("rejected safepoint skips snapshot read", func(t *testing.T) { + pdClient := &verifyGCSafepointTestPDClient{physical: 1000, keyspaceID: 42} + snapshotTS := oracle.ComposeTS(pdClient.physical, pdClient.logical) + pdClient.minSafePoint = snapshotTS + 2 + listCalled := false + o := &verifyGCSafepointOptions{ + keyspace: "essential-v1", + pdClient: pdClient, + legacyClient: pdClient, + listDatabases: func(context.Context, string, uint64) (int, error) { + listCalled = true + return 0, nil + }, + } + + err := o.run(&cobra.Command{}) + require.ErrorContains(t, err, "minimum service safepoint") + require.False(t, listCalled) + require.Equal(t, pdClient.setServiceID, pdClient.deleteServiceID) + require.True(t, pdClient.closed) + }) + + t.Run("cleanup failure is returned", func(t *testing.T) { + pdClient := &verifyGCSafepointTestPDClient{ + physical: 1000, + keyspaceID: 42, + deleteErr: stderrors.New("delete failed"), + } + o := &verifyGCSafepointOptions{ + keyspace: "essential-v1", + pdClient: pdClient, + legacyClient: pdClient, + listDatabases: func(context.Context, string, uint64) (int, error) { + return 3, nil + }, + } + + err := o.run(&cobra.Command{}) + require.ErrorContains(t, err, "delete service safepoint failed") + require.True(t, pdClient.closed) + }) +} From 1df22b8069049b8bafe1871e3732f0df867d5a58 Mon Sep 17 00:00:00 2001 From: Ping Yu Date: Tue, 4 Aug 2026 11:37:07 +0800 Subject: [PATCH 02/12] *: bump TiDB and client-go for keyspace GC Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus Signed-off-by: Ping Yu --- go.mod | 73 +++++++++++++------------- go.sum | 163 ++++++++++++++++++++++++++++----------------------------- 2 files changed, 114 insertions(+), 122 deletions(-) diff --git a/go.mod b/go.mod index 564652b685..7b7016fb64 100644 --- a/go.mod +++ b/go.mod @@ -31,7 +31,7 @@ require ( github.com/go-mysql-org/go-mysql v1.13.0 github.com/go-oauth2/oauth2/v4 v4.5.4 github.com/go-sql-driver/mysql v1.9.3 - github.com/goccy/go-json v0.10.5 + github.com/goccy/go-json v0.10.6 github.com/gogo/protobuf v1.3.2 github.com/golang-jwt/jwt/v5 v5.3.0 github.com/golang/mock v1.6.0 @@ -45,14 +45,14 @@ require ( github.com/integralist/go-findroot v0.0.0-20160518114804-ac90681525dc github.com/jarcoal/httpmock v1.2.0 github.com/json-iterator/go v1.1.12 - github.com/klauspost/compress v1.18.5 + github.com/klauspost/compress v1.19.0 github.com/linkedin/goavro/v2 v2.14.0 github.com/mailru/easyjson v0.9.1 github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 - github.com/pierrec/lz4/v4 v4.1.26 + github.com/pierrec/lz4/v4 v4.1.27 github.com/pingcap/errors v0.11.5-0.20260508054701-306e305bcf41 github.com/pingcap/failpoint v0.0.0-20240528011301-b51a646c7c86 - github.com/pingcap/kvproto v0.0.0-20260716092138-22607720b19a + github.com/pingcap/kvproto v0.0.0-20260721064811-683dad8fa368 github.com/pingcap/log v1.1.1-0.20250917021125-19901e015dc9 github.com/pingcap/sysutil v1.0.1-0.20240311050922-ae81ee01f3a5 github.com/pingcap/tidb v1.1.0-beta.0.20260625145450-3e4ee9fc99e7 @@ -70,9 +70,9 @@ require ( github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 github.com/thanhpk/randstr v1.0.6 - github.com/tikv/client-go/v2 v2.0.8-0.20260618054307-6125c3b05c6c + github.com/tikv/client-go/v2 v2.0.8-0.20260803074519-341d4692ec57 github.com/tikv/pd v1.1.0-beta.0.20260604125942-9f1c47b1e851 - github.com/tikv/pd/client v0.0.0-20260604125942-9f1c47b1e851 + github.com/tikv/pd/client v0.0.0-20260708075407-4e05b9d2c2d3 github.com/tinylib/msgp v1.5.0 github.com/uber-go/atomic v1.4.0 github.com/xdg/scram v1.0.5 @@ -89,15 +89,15 @@ require ( go.uber.org/multierr v1.11.0 go.uber.org/zap v1.27.1 golang.org/x/net v0.55.0 - golang.org/x/oauth2 v0.34.0 - golang.org/x/sync v0.20.0 - golang.org/x/sys v0.45.0 + golang.org/x/oauth2 v0.36.0 + golang.org/x/sync v0.22.0 + golang.org/x/sys v0.47.0 golang.org/x/term v0.43.0 golang.org/x/text v0.37.0 golang.org/x/time v0.14.0 google.golang.org/api v0.230.0 - google.golang.org/grpc v1.79.3 - google.golang.org/protobuf v1.36.10 + google.golang.org/grpc v1.82.0 + google.golang.org/protobuf v1.36.11 ) replace ( @@ -138,11 +138,10 @@ require ( github.com/aliyun/alibaba-cloud-sdk-go v1.61.1581 // indirect github.com/aliyun/alibabacloud-oss-go-sdk-v2 v1.2.3 // indirect github.com/aliyun/credentials-go v1.4.7 // indirect - github.com/andybalholm/brotli v1.2.0 // indirect - github.com/apache/arrow-go/v18 v18.5.0 // indirect - github.com/apache/thrift v0.23.0 // indirect + github.com/andybalholm/brotli v1.2.2 // indirect + github.com/apache/arrow-go/v18 v18.6.1-0.20260713210906-efc145c067b6 // indirect + github.com/apache/thrift v0.24.0 // indirect github.com/ardielle/ardielle-go v1.5.2 // indirect - github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.14 // indirect github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.19.0 // indirect @@ -173,6 +172,7 @@ require ( github.com/cheggaaa/pb/v3 v3.0.8 // indirect github.com/cilium/ebpf v0.4.0 // indirect github.com/clbanning/mxj/v2 v2.7.0 // indirect + github.com/clipperhouse/uax29/v2 v2.7.0 // indirect github.com/cloudfoundry/gosigar v1.3.6 // indirect github.com/cloudwego/base64x v0.1.6 // indirect github.com/cockroachdb/errors v1.11.3 // indirect @@ -219,10 +219,10 @@ require ( github.com/godbus/dbus/v5 v5.0.4 // indirect github.com/golang-jwt/jwt/v4 v4.5.2 // indirect github.com/golang/glog v1.2.5 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v1.0.0 // indirect - github.com/google/flatbuffers v25.9.23+incompatible // indirect + github.com/google/flatbuffers v25.12.19+incompatible // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/pprof v0.0.0-20250903194437-c28834ac2320 // indirect github.com/google/s2a-go v0.1.9 // indirect @@ -231,9 +231,9 @@ require ( github.com/gorilla/mux v1.8.1 // indirect github.com/gorilla/websocket v1.5.1 // indirect github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect - github.com/hamba/avro/v2 v2.30.0 // indirect + github.com/hamba/avro/v2 v2.31.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect @@ -255,9 +255,8 @@ require ( github.com/joho/sqltocsv v0.0.0-20210428211105-a6d6801d59df // indirect github.com/jonboulle/clockwork v0.4.0 // indirect github.com/joomcode/errorx v1.0.1 // indirect - github.com/klauspost/asmfmt v1.3.2 // indirect github.com/klauspost/cpuid v1.3.1 // indirect - github.com/klauspost/cpuid/v2 v2.3.0 // indirect + github.com/klauspost/cpuid/v2 v2.4.0 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/ks3sdklib/aws-sdk-go v1.2.9 // indirect @@ -272,9 +271,9 @@ require ( github.com/lufia/plan9stats v0.0.0-20230326075908-cb1d2100619a // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.16 // indirect - github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 // indirect - github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 // indirect + github.com/mattn/go-runewidth v0.0.20 // indirect + github.com/mitchellh/copystructure v1.0.0 // indirect + github.com/mitchellh/reflectwalk v1.0.1 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/mtibben/percent v0.2.1 // indirect @@ -294,7 +293,7 @@ require ( github.com/pingcap/fn v1.0.0 // indirect github.com/pingcap/goleveldb v0.0.0-20191226122134-f82aafb29989 // indirect github.com/pingcap/metering_sdk v0.0.0-20260324055927-14fead745f1d // indirect - github.com/pingcap/tipb v0.0.0-20260617071407-7c071244534b // indirect + github.com/pingcap/tipb v0.0.0-20260623093813-5f9928e91afe // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect @@ -306,7 +305,6 @@ require ( github.com/quic-go/qpack v0.5.1 // indirect github.com/quic-go/quic-go v0.55.0 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect - github.com/rivo/uniseg v0.4.7 // indirect github.com/robfig/cron/v3 v3.0.1 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/rs/cors v1.7.0 // indirect @@ -350,7 +348,7 @@ require ( github.com/xdg/stringprep v1.0.3 // indirect github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - github.com/zeebo/xxh3 v1.0.2 // indirect + github.com/zeebo/xxh3 v1.1.0 // indirect github.com/zyedidia/generic v1.2.1 // indirect go.etcd.io/bbolt v1.3.10 // indirect go.etcd.io/etcd/client/v2 v2.305.15 // indirect @@ -364,17 +362,15 @@ require ( go.opentelemetry.io/otel/metric v1.43.0 // indirect go.opentelemetry.io/otel/sdk v1.43.0 // indirect go.opentelemetry.io/otel/trace v1.43.0 // indirect - go.opentelemetry.io/proto/otlp v1.7.1 // indirect + go.opentelemetry.io/proto/otlp v1.9.0 // indirect golang.org/x/arch v0.22.0 // indirect golang.org/x/crypto v0.52.0 // indirect - golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect - golang.org/x/mod v0.35.0 // indirect - golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa // indirect - golang.org/x/tools v0.44.0 // indirect - golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect - google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect + golang.org/x/exp v0.0.0-20260112195511-716be5621a96 // indirect + golang.org/x/mod v0.36.0 // indirect + golang.org/x/tools v0.45.0 // indirect + google.golang.org/genproto v0.0.0-20250324211829-b45e905df463 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect @@ -396,8 +392,9 @@ require ( replace ( github.com/IBM/sarama v1.41.2 => github.com/pingcap/sarama v1.41.2-pingcap-20260622.1 - // Downgrade grpc to v1.63.2, as well as other related modules. - github.com/apache/arrow-go/v18 => github.com/joechenrh/arrow-go/v18 v18.0.0-20250911101656-62c34c9a3b82 // copy from TiDB github.com/go-ldap/ldap/v3 v3.4.4 => github.com/yangkeao/ldap/v3 v3.4.5-0.20230421065457-369a3bab1117 + github.com/pingcap/tidb => github.com/pingyu/tidb v1.1.0-beta.0.20260803170810-5f67e65a3614 + github.com/pingcap/tidb/pkg/parser => github.com/pingyu/tidb/pkg/parser v0.0.0-20260803170810-5f67e65a3614 + github.com/tikv/client-go/v2 => github.com/pingyu/client-go/v2 v2.0.1-0.20260803170505-11cb9ad8088b ) diff --git a/go.sum b/go.sum index 2a9ecdef0e..f240ff5527 100644 --- a/go.sum +++ b/go.sum @@ -125,19 +125,19 @@ github.com/aliyun/credentials-go v1.3.6/go.mod h1:1LxUuX7L5YrZUWzBrRyk0SwSdH4OmP github.com/aliyun/credentials-go v1.4.5/go.mod h1:Jm6d+xIgwJVLVWT561vy67ZRP4lPTQxMbEYRuT2Ti1U= github.com/aliyun/credentials-go v1.4.7 h1:T17dLqEtPUFvjDRRb5giVvLh6dFT8IcNFJJb7MeyCxw= github.com/aliyun/credentials-go v1.4.7/go.mod h1:Jm6d+xIgwJVLVWT561vy67ZRP4lPTQxMbEYRuT2Ti1U= -github.com/andybalholm/brotli v1.2.0 h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwToPjQ= -github.com/andybalholm/brotli v1.2.0/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY= +github.com/andybalholm/brotli v1.2.2 h1:HzTuoo2ErYQqf5qvcJInB8uvqSVxRttzkFexPWtnceM= +github.com/andybalholm/brotli v1.2.2/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/apache/arrow-go/v18 v18.6.1-0.20260713210906-efc145c067b6 h1:BxUaI96qgW9FzSrzbCmlnFvKOX/u7isAL6VrCWaVjEY= +github.com/apache/arrow-go/v18 v18.6.1-0.20260713210906-efc145c067b6/go.mod h1:PM6IigLJkdMwIpeHXnymo+xZ52f42a9EYiLtRel4p/A= github.com/apache/pulsar-client-go v0.13.0 h1:XB8jbcVgBZlRkswtTFj6Xy3Hv0mtpvT8xn/ovT1c0I0= github.com/apache/pulsar-client-go v0.13.0/go.mod h1:btNzPWaKtG9geL6naJNYwXnqJJ/codYM41awyZxZLQ4= -github.com/apache/thrift v0.23.0 h1:wKR6YnefQSEnxpEfmgTPuJibNG4bF0p2TK34tHLWi3s= -github.com/apache/thrift v0.23.0/go.mod h1:zPt6WxgvTOM6hF92y8C+MkEM5LMxZuk4JcQOiU4Esvs= +github.com/apache/thrift v0.24.0 h1:zy31L1a49QTNB2bG1BBfMXol3yJrTH975G3pPubQVLQ= +github.com/apache/thrift v0.24.0/go.mod h1:zPt6WxgvTOM6hF92y8C+MkEM5LMxZuk4JcQOiU4Esvs= github.com/ardielle/ardielle-go v1.5.2 h1:TilHTpHIQJ27R1Tl/iITBzMwiUGSlVfiVhwDNGM3Zj4= github.com/ardielle/ardielle-go v1.5.2/go.mod h1:I4hy1n795cUhaVt/ojz83SNVCYIGsAFAONtv2Dr7HUI= github.com/ardielle/ardielle-tools v1.5.4/go.mod h1:oZN+JRMnqGiIhrzkRN9l26Cej9dEx4jeNG6A+AdkShk= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= -github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/aws/aws-sdk-go v1.32.6/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.44.204/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go v1.55.7 h1:UJrkFq7es5CShfBwlWAC8DA077vp8PyVbQd3lqLiztE= @@ -228,13 +228,15 @@ github.com/clbanning/mxj/v2 v2.5.5/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME= github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/clipperhouse/uax29/v2 v2.7.0 h1:+gs4oBZ2gPfVrKPthwbMzWZDaAFPGYK72F0NJv2v7Vk= +github.com/clipperhouse/uax29/v2 v2.7.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= github.com/cloudfoundry/gosigar v1.3.6 h1:gIc08FbB3QPb+nAQhINIK/qhf5REKkY0FTGgRGXkcVc= github.com/cloudfoundry/gosigar v1.3.6/go.mod h1:lNWstu5g5gw59O09Y+wsMNFzBSnU8a0u+Sfx4dq360E= github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M= github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w= -github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI= +github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 h1:aBangftG7EVZoUb69Os8IaYg++6uMOdKK83QtkkvJik= +github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2/go.mod h1:qwXFYgsP6T7XnJtbKlf1HP8AjxZZyzxMmc+Lq5GjlU4= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= @@ -320,11 +322,11 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA= -github.com/envoyproxy/go-control-plane/envoy v1.36.0 h1:yg/JjO5E7ubRyKX3m07GF3reDNEnfOboJ0QySbH736g= -github.com/envoyproxy/go-control-plane/envoy v1.36.0/go.mod h1:ty89S1YCCVruQAm9OtKeEkQLTb+Lkz0k8v9W0Oxsv98= +github.com/envoyproxy/go-control-plane/envoy v1.37.0 h1:u3riX6BoYRfF4Dr7dwSOroNfdSbEPe9Yyl09/B6wBrQ= +github.com/envoyproxy/go-control-plane/envoy v1.37.0/go.mod h1:DReE9MMrmecPy+YvQOAOHNYMALuowAnbjjEMkkWOi6A= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4= -github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA= +github.com/envoyproxy/protoc-gen-validate v1.3.3 h1:MVQghNeW+LZcmXe7SY1V36Z+WFMDjpqGAGacLe2T0ds= +github.com/envoyproxy/protoc-gen-validate v1.3.3/go.mod h1:TsndJ/ngyIdQRhMcVVGDDHINPLWB7C82oDArY51KfB0= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= @@ -397,8 +399,8 @@ github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9L github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= -github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= @@ -420,8 +422,8 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfU github.com/golang/glog v1.2.5 h1:DrW6hGnjIhtvhOIiAKT6Psh/Kd/ldepEa81DKeiRJ5I= github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= @@ -446,8 +448,8 @@ github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= -github.com/google/flatbuffers v25.9.23+incompatible h1:rGZKv+wOb6QPzIdkM2KxhBZCDrA0DeN6DNmRDrqIsQU= -github.com/google/flatbuffers v25.9.23+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/flatbuffers v25.12.19+incompatible h1:haMV2JRRJCe1998HeW/p0X9UaMTK6SDo0ffLn2+DbLs= +github.com/google/flatbuffers v25.12.19+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -505,12 +507,12 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92Bcuy github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= -github.com/hamba/avro/v2 v2.30.0 h1:OaIdh0+dZIJ331FO/+YYBwZZRdGVyyHuRSyHsjZLJoA= -github.com/hamba/avro/v2 v2.30.0/go.mod h1:X6gDhYv6DQVAT56VqOKuW+PLnQrEQqGB9l1nhlMdAdQ= +github.com/hamba/avro/v2 v2.31.0 h1:wv3nmua7lCEIwWsb6vqsTS3pXktTxcKg5eoyNu0VhrU= +github.com/hamba/avro/v2 v2.31.0/go.mod h1:t6lJYAGE5Mswfn17zjtyQsssRQgnqO6TXLBCHHWRqrw= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -574,8 +576,6 @@ github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9Y github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/joechenrh/arrow-go/v18 v18.0.0-20250911101656-62c34c9a3b82 h1:FgHYKbQYF2aD5vlSMCHiS9Xn5PPmFLSaCc+5OYInMRc= -github.com/joechenrh/arrow-go/v18 v18.0.0-20250911101656-62c34c9a3b82/go.mod h1:xBWjSZfpqLkg1mHuVUSF8lMTUfE7SdEUl/VVVd79MIw= github.com/johannesboyne/gofakes3 v0.0.0-20230506070712-04da935ef877 h1:O7syWuYGzre3s73s+NkgB8e0ZvsIVhT/zxNU7V1gHK8= github.com/johannesboyne/gofakes3 v0.0.0-20230506070712-04da935ef877/go.mod h1:AxgWC4DDX54O2WDoQO1Ceabtn6IbktjU/7bigor+66g= github.com/joho/sqltocsv v0.0.0-20210428211105-a6d6801d59df h1:Zrb0IbuLOGHL7nrO2WrcuNWgDTlzFv3zY69QMx4ggQE= @@ -598,17 +598,15 @@ github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvW github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= -github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= -github.com/klauspost/compress v1.18.5 h1:/h1gH5Ce+VWNLSWqPzOVn6XBO+vJbCNGvjoaGBFW2IE= -github.com/klauspost/compress v1.18.5/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= +github.com/klauspost/compress v1.19.0 h1:sXLILfc9jV2QYWkzFOPWStmcUVH2RHEB1JCdY2oVvCQ= +github.com/klauspost/compress v1.19.0/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid v1.3.1 h1:5JNjFYYQrZeKRJ0734q51WCEEn2huer72Dc7K+R/b6s= github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd42rAQw4= -github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= -github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= +github.com/klauspost/cpuid/v2 v2.4.0 h1:S6Hrbc7+ywsr0r+RLapfGBHfyefhCTwEh3A0tV913Dw= +github.com/klauspost/cpuid/v2 v2.4.0/go.mod h1:19jmZ9mjzoF//ddRSUsv0zfBTJWh3QJh9FNxZTMrGxU= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -658,17 +656,18 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= -github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.20 h1:WcT52H91ZUAwy8+HUkdM3THM6gXqXuLJi9O3rjcQQaQ= +github.com/mattn/go-runewidth v0.0.20/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/maxatome/go-testdeep v1.11.0 h1:Tgh5efyCYyJFGUYiT0qxBSIDeXw0F5zSoatlou685kk= github.com/maxatome/go-testdeep v1.11.0/go.mod h1:011SgQ6efzZYAen6fDn4BqQ+lUR72ysdyKe7Dyogw70= -github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 h1:AMFGa4R4MiIpspGNG7Z948v4n35fFGB3RR3G/ry4FWs= -github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= -github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8DFdX7uMikMLXX4oubIzJF4kv/wI= -github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= +github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= +github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= +github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/moby/sys/mount v0.3.3 h1:fX1SVkXFJ47XWDoeFW4Sq7PdQJnV2QIDZAqjNqgEjUs= github.com/moby/sys/mount v0.3.3/go.mod h1:PBaEorSNTLG5t/+4EgukEQVlAvVEc6ZjTySwKdqp5K0= github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= @@ -731,8 +730,8 @@ github.com/philhofer/fwd v1.2.0/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJ github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= -github.com/pierrec/lz4/v4 v4.1.26 h1:GrpZw1gZttORinvzBdXPUXATeqlJjqUG/D87TKMnhjY= -github.com/pierrec/lz4/v4 v4.1.26/go.mod h1:EoQMVJgeeEOMsCqCzqFm2O0cJvljX2nGZjcRIPL34O4= +github.com/pierrec/lz4/v4 v4.1.27 h1:+PhzhWDrjRj89TH2sw43nE3+4+W8lSxIuQadEHZyjUk= +github.com/pierrec/lz4/v4 v4.1.27/go.mod h1:EoQMVJgeeEOMsCqCzqFm2O0cJvljX2nGZjcRIPL34O4= github.com/pingcap/badger v1.5.1-0.20241015064302-38533b6cbf8d h1:eHcokyHxm7HVM+7+Qy1zZwC7NhX9wVNX8oQDcSZw1qI= github.com/pingcap/badger v1.5.1-0.20241015064302-38533b6cbf8d/go.mod h1:KiO2zumBCWx7yoVYoFRpb+DNrwEPk1pR1LF7NvOACMQ= github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8/go.mod h1:B1+S9LNcuMyLH/4HMTViQOJevkGiik3wW2AN9zb2fNQ= @@ -750,8 +749,8 @@ github.com/pingcap/fn v1.0.0/go.mod h1:u9WZ1ZiOD1RpNhcI42RucFh/lBuzTu6rw88a+oF2Z github.com/pingcap/goleveldb v0.0.0-20191226122134-f82aafb29989 h1:surzm05a8C9dN8dIUmo4Be2+pMRb6f55i+UIYrluu2E= github.com/pingcap/goleveldb v0.0.0-20191226122134-f82aafb29989/go.mod h1:O17XtbryoCJhkKGbT62+L2OlrniwqiGLSqrmdHCMzZw= github.com/pingcap/kvproto v0.0.0-20191211054548-3c6b38ea5107/go.mod h1:WWLmULLO7l8IOcQG+t+ItJ3fEcrL5FxF0Wu+HrMy26w= -github.com/pingcap/kvproto v0.0.0-20260716092138-22607720b19a h1:byZN6kkQEzeBfkrA7DMasEJciMwpKLNuK2jZiJH1N+o= -github.com/pingcap/kvproto v0.0.0-20260716092138-22607720b19a/go.mod h1:z6+aAHB7dBkA+LyinEX+48/ImRJ3jag0Hg0c7wkhEvE= +github.com/pingcap/kvproto v0.0.0-20260721064811-683dad8fa368 h1:qW0gHsqY3X3qmyiEfESqpYSF3Vu7agUiAyBnPWQXtm8= +github.com/pingcap/kvproto v0.0.0-20260721064811-683dad8fa368/go.mod h1:z6+aAHB7dBkA+LyinEX+48/ImRJ3jag0Hg0c7wkhEvE= github.com/pingcap/log v0.0.0-20191012051959-b742a5d432e9/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8= github.com/pingcap/log v0.0.0-20210625125904-98ed8e2eb1c7/go.mod h1:8AanEdAHATuRurdGxZXBz0At+9avep+ub7U1AGYLIMM= github.com/pingcap/log v1.1.0/go.mod h1:DWQW5jICDR7UJh4HtxXSM20Churx4CQL0fwL/SoOSA4= @@ -763,16 +762,18 @@ github.com/pingcap/sarama v1.41.2-pingcap-20260622.1 h1:TrtpL+fs51pUc21CZ8mzIotO github.com/pingcap/sarama v1.41.2-pingcap-20260622.1/go.mod h1:PIL6ZKKKhm19IbQpmpJcFnybAi1yXtgLAitDAeBdNCw= github.com/pingcap/sysutil v1.0.1-0.20240311050922-ae81ee01f3a5 h1:T4pXRhBflzDeAhmOQHNPRRogMYxP13V7BkYw3ZsoSfE= github.com/pingcap/sysutil v1.0.1-0.20240311050922-ae81ee01f3a5/go.mod h1:rlimy0GcTvjiJqvD5mXTRr8O2eNZPBrcUgiWVYp9530= -github.com/pingcap/tidb v1.1.0-beta.0.20260625145450-3e4ee9fc99e7 h1:xhPN8ZqzLT1A0ke34Pi1uFsIN7vABs4mVAXous84/W8= -github.com/pingcap/tidb v1.1.0-beta.0.20260625145450-3e4ee9fc99e7/go.mod h1:BcXJZ9gPRlZrFJJ9OGNap9rMuXvZpHsEGxz8NS7pYWY= github.com/pingcap/tidb-dashboard v0.0.0-20260316045729-aa6178a60657 h1:o/epSPBAWPf4LC4qTAw/AkDRid5ejP4EOcV2CSZ06gw= github.com/pingcap/tidb-dashboard v0.0.0-20260316045729-aa6178a60657/go.mod h1:3C4RKDXCp3OtN0EsL4Qec3/LFXyJsWITsLCmvNV3bZ4= -github.com/pingcap/tidb/pkg/parser v0.0.0-20260616034257-3adc8ec71ef3 h1:Bk3QuNvNLAt9EtTWGw6JfsUSvn1mC9rALpnRU/vDtz0= -github.com/pingcap/tidb/pkg/parser v0.0.0-20260616034257-3adc8ec71ef3/go.mod h1:zDLDsfNBU5+L6T4J9/OgWAHc/WZvMUjbpgHqQ/t3yKo= github.com/pingcap/tiflow v0.0.0-20260723070929-e8736df4fe74 h1:nGUVwdQMqd590TVOMITxr268HVTzBtFGswDEvJSwQfE= github.com/pingcap/tiflow v0.0.0-20260723070929-e8736df4fe74/go.mod h1:t5vaLtgdBIX7TR8yY3AuIq+hUsbJio8o5j1WBsoX7SU= -github.com/pingcap/tipb v0.0.0-20260617071407-7c071244534b h1:10OHx2/2noFfPU1K3c3QXZshsw3XvKssk/mjbLdw8DI= -github.com/pingcap/tipb v0.0.0-20260617071407-7c071244534b/go.mod h1:RM8iRcMalzOthG2XJxnNBniM4xFGb/lDwHUwqkaVzt4= +github.com/pingcap/tipb v0.0.0-20260623093813-5f9928e91afe h1:9I5GHZesmR+hv68t00BO7tayKMFfywi+hlpn119GscM= +github.com/pingcap/tipb v0.0.0-20260623093813-5f9928e91afe/go.mod h1:RM8iRcMalzOthG2XJxnNBniM4xFGb/lDwHUwqkaVzt4= +github.com/pingyu/client-go/v2 v2.0.1-0.20260803170505-11cb9ad8088b h1:uBHv7Y7ZUwrCONnwvo/+zwmmIezHd7Wnibps4Lbhykk= +github.com/pingyu/client-go/v2 v2.0.1-0.20260803170505-11cb9ad8088b/go.mod h1:kNePJmoqcbd+eTTzZmzZy40rX8LjI6qFYCzdV66cu18= +github.com/pingyu/tidb v1.1.0-beta.0.20260803170810-5f67e65a3614 h1:JR7pKrKJLcwbjx2ROhLKXOosf1GUGPQF/ZRLQkU+HO4= +github.com/pingyu/tidb v1.1.0-beta.0.20260803170810-5f67e65a3614/go.mod h1:CZ5xxE/a7/rbGwZgqzvfAyMhvwWxC9QKQ1iYf1iBiVA= +github.com/pingyu/tidb/pkg/parser v0.0.0-20260803170810-5f67e65a3614 h1:kOSlKWoBWxpsqHUH6F8l1ibeoelQsJdi+H5tMyAXb6w= +github.com/pingyu/tidb/pkg/parser v0.0.0-20260803170810-5f67e65a3614/go.mod h1:zDLDsfNBU5+L6T4J9/OgWAHc/WZvMUjbpgHqQ/t3yKo= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= @@ -821,8 +822,6 @@ github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94 github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= -github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/robfig/cron v1.2.0 h1:ZjScXvvxeQ63Dbyxy76Fj3AT3Ut0aKsyd2/tl3DTMuQ= github.com/robfig/cron v1.2.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= @@ -944,12 +943,10 @@ github.com/tidwall/rtred v0.1.2 h1:exmoQtOLvDoO8ud++6LwVsAMTu0KPzLTUrMln8u1yu8= github.com/tidwall/rtred v0.1.2/go.mod h1:hd69WNXQ5RP9vHd7dqekAz+RIdtfBogmglkZSRxCHFQ= github.com/tidwall/tinyqueue v0.1.1 h1:SpNEvEggbpyN5DIReaJ2/1ndroY8iyEGxPYxoSaymYE= github.com/tidwall/tinyqueue v0.1.1/go.mod h1:O/QNHwrnjqr6IHItYrzoHAKYhBkLI67Q096fQP5zMYw= -github.com/tikv/client-go/v2 v2.0.8-0.20260618054307-6125c3b05c6c h1:DoEVLcE/x0Yz4GjGSTh32vcvYIUZKKMp+VeSIr6NAh4= -github.com/tikv/client-go/v2 v2.0.8-0.20260618054307-6125c3b05c6c/go.mod h1:ifrCFaHJeZDcz6kded2eVwn+t3Auvqve8hI9vLIoVBg= github.com/tikv/pd v1.1.0-beta.0.20260604125942-9f1c47b1e851 h1:2beLPo1vMSw9gpdcC5Fam/P5HaXRPmX4TEN2fv+7nKE= github.com/tikv/pd v1.1.0-beta.0.20260604125942-9f1c47b1e851/go.mod h1:Pb3H0cSkdiEdj761wzNziNHFOLVYuQmNgxQKp35UoxQ= -github.com/tikv/pd/client v0.0.0-20260604125942-9f1c47b1e851 h1:WhOxs9dUc4hZv9TkRTQ3e+jEIWpn5B2S+yzXZE7qn38= -github.com/tikv/pd/client v0.0.0-20260604125942-9f1c47b1e851/go.mod h1:GP9u8OBXqYQ6e43htjprZILrzn3tuogzkEEmmiNlzc4= +github.com/tikv/pd/client v0.0.0-20260708075407-4e05b9d2c2d3 h1:OoBvgoeWmdNEXtS+eOlhysz/OvhA4GS0OdPVhTXteGA= +github.com/tikv/pd/client v0.0.0-20260708075407-4e05b9d2c2d3/go.mod h1:3/Bu91CJONgkDA+Y0v/cnbROSJnu5tQ09vv7JGybUBA= github.com/tinylib/msgp v1.5.0 h1:GWnqAE54wmnlFazjq2+vgr736Akg58iiHImh+kPY2pc= github.com/tinylib/msgp v1.5.0/go.mod h1:cvjFkb4RiC8qSBOPMGPSzSAx47nAsfhLVTCZZNuHv5o= github.com/tjfoc/gmsm v1.3.2/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w= @@ -1027,8 +1024,8 @@ github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= -github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= -github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= +github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs= +github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s= github.com/zyedidia/generic v1.2.1 h1:Zv5KS/N2m0XZZiuLS82qheRG4X1o5gsWreGb0hR7XDc= github.com/zyedidia/generic v1.2.1/go.mod h1:ly2RBz4mnz1yeuVbQA/VFwGjK3mnHGRj1JuoG336Bis= go.etcd.io/bbolt v1.3.10 h1:+BqfJTcCzTItrop8mq/lbzL8wSGtj94UO/3U31shqG0= @@ -1071,8 +1068,8 @@ go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfC go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= -go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= -go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= +go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= +go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= @@ -1127,8 +1124,8 @@ golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= -golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= +golang.org/x/exp v0.0.0-20260112195511-716be5621a96 h1:Z/6YuSHTLOHfNFdb8zVZomZr7cqNgTJvA8+Qz75D8gU= +golang.org/x/exp v0.0.0-20260112195511-716be5621a96/go.mod h1:nzimsREAkjBCIEFtHiYkrJyT+2uy9YZJB7H1k68CXZU= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -1144,8 +1141,8 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.35.0 h1:Ww1D637e6Pg+Zb2KrWfHQUnH2dQRLBQyAtpr/haaJeM= -golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU= +golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= +golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1187,8 +1184,8 @@ golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.34.0 h1:hqK/t4AKgbqWkdkcAeI8XLmbK+4m4G5YeQRrmiotGlw= -golang.org/x/oauth2 v0.34.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= +golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1202,8 +1199,8 @@ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= -golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= +golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1244,11 +1241,9 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= -golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= +golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= -golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa h1:efT73AJZfAAUV7SOip6pWGkwJDzIGiKBZGVzHYa+ve4= -golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa/go.mod h1:kHjTxDEnAu6/Nl9lDkzjWpR+bmKfxeiRuSDlsMb70gE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1311,8 +1306,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c= -golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI= +golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8= +golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0= golang.org/x/tools/godoc v0.1.0-deprecated h1:o+aZ1BOj6Hsx/GBdJO/s815sqftjSnrZZwyYTHODvtk= golang.org/x/tools/godoc v0.1.0-deprecated/go.mod h1:qM63CriJ961IHWmnWa9CjZnBndniPt4a3CK0PVB9bIg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1322,8 +1317,8 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= google.golang.org/api v0.170.0 h1:zMaruDePM88zxZBG+NG8+reALO2rfLhe/JShitLyT48= google.golang.org/api v0.170.0/go.mod h1:/xql9M2btF85xac/VAm4PsLMTLVGUOpq4BE9R8jyNy8= @@ -1336,12 +1331,12 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb h1:ITgPrl429bc6+2ZraNSzMDk3I95nmQln2fuPstKwFDE= -google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:sAo5UzpjUwgFBCzupwhcLcxHVDK7vG5IqI30YnwX2eE= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= -google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto v0.0.0-20250324211829-b45e905df463 h1:qEFnJI6AnfZk0NNe8YTyXQh5i//Zxi4gBHwRgp76qpw= +google.golang.org/genproto v0.0.0-20250324211829-b45e905df463/go.mod h1:SqIx1NV9hcvqdLHo7uNZDS5lrUJybQ3evo3+z/WBfA0= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= +google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v0.0.0-20180607172857-7a6a684ca69e/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -1353,10 +1348,10 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= -google.golang.org/grpc/examples v0.0.0-20231221225426-4f03f3ff32c9 h1:ATnmU8nL2NfIyTSiBvJVDIDIr3qBmeW+c7z7XU21eWs= -google.golang.org/grpc/examples v0.0.0-20231221225426-4f03f3ff32c9/go.mod h1:j5uROIAAgi3YmtiETMt1LW0d/lHqQ7wwrIY4uGRXLQ4= +google.golang.org/grpc v1.82.0 h1:vguDnZUPjE26w09A63VoxZPnvPjB5Riyc0mkXPFmAIU= +google.golang.org/grpc v1.82.0/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= +google.golang.org/grpc/examples v0.0.0-20250407062114-b368379ef8f6 h1:ExN12ndbJ608cboPYflpTny6mXSzPrDLh0iTaVrRrds= +google.golang.org/grpc/examples v0.0.0-20250407062114-b368379ef8f6/go.mod h1:6ytKWczdvnpnO+m+JiG9NjEDzR1FJfsnmJdG7B8QVZ8= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1366,8 +1361,8 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From e5a4451a1568c5f56e20e07cf5356012092702ef Mon Sep 17 00:00:00 2001 From: Ping Yu Date: Tue, 4 Aug 2026 11:37:17 +0800 Subject: [PATCH 03/12] cli: make GC safepoint verifier read-only Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus Signed-off-by: Ping Yu --- cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go | 57 +------- .../cli_unsafe_verify_gc_safepoint_test.go | 122 +++--------------- 2 files changed, 17 insertions(+), 162 deletions(-) diff --git a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go index 6c1c407ad7..920d090b26 100644 --- a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go +++ b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go @@ -15,11 +15,8 @@ package cli import ( "context" - "fmt" "net/url" - "time" - "github.com/pingcap/kvproto/pkg/keyspacepb" "github.com/pingcap/ticdc/cmd/cdc/factory" "github.com/pingcap/ticdc/cmd/util" "github.com/pingcap/ticdc/pkg/common" @@ -31,24 +28,16 @@ import ( "github.com/spf13/cobra" tikvconfig "github.com/tikv/client-go/v2/config" "github.com/tikv/client-go/v2/oracle" - pdgc "github.com/tikv/pd/client/clients/gc" -) - -const ( - verifyGCSafepointTTLSeconds = int64(600) - verifyGCSafepointCleanupTTL = 10 * time.Second ) type verifyGCSafepointPDClient interface { GetTS(ctx context.Context) (physical int64, logical int64, err error) - LoadKeyspace(ctx context.Context, keyspace string) (*keyspacepb.KeyspaceMeta, error) Close() } type verifyGCSafepointOptions struct { keyspace string pdClient verifyGCSafepointPDClient - legacyClient pdgc.LegacyClientV2 listDatabases func(ctx context.Context, keyspace string, snapshotTS uint64) (int, error) } @@ -62,64 +51,22 @@ func (o *verifyGCSafepointOptions) complete(f factory.Factory) error { if err != nil { return err } - legacyClient, ok := pdClient.(pdgc.LegacyClientV2) - if !ok { - pdClient.Close() - return cerrors.ErrUpdateServiceSafepointFailed.GenWithStackByArgs("PD client does not support LegacyClientV2") - } - o.pdClient = pdClient - o.legacyClient = legacyClient o.listDatabases = func(ctx context.Context, keyspace string, snapshotTS uint64) (int, error) { return listDatabasesAtSnapshot(ctx, f.GetPdAddr(), f.GetCredential(), keyspace, snapshotTS) } return nil } -func (o *verifyGCSafepointOptions) run(cmd *cobra.Command) (runErr error) { +func (o *verifyGCSafepointOptions) run(cmd *cobra.Command) error { defer o.pdClient.Close() ctx := cmd.Context() - keyspaceMeta, err := o.pdClient.LoadKeyspace(ctx, o.keyspace) - if err != nil { - return cerrors.WrapError(cerrors.ErrLoadKeyspaceFailed, err) - } - physical, logical, err := o.pdClient.GetTS(ctx) if err != nil { return cerrors.WrapError(cerrors.ErrPDEtcdAPIError, err) } snapshotTS := oracle.ComposeTS(physical, logical) - serviceID := fmt.Sprintf("ticdc-gc-safepoint-verifier-%d", snapshotTS) - requestedSafePoint := snapshotTS + 1 - minSafePoint, err := o.legacyClient.SetServiceSafePointV2( - ctx, keyspaceMeta.Id, serviceID, verifyGCSafepointTTLSeconds, requestedSafePoint, - ) - if err != nil { - return cerrors.WrapError(cerrors.ErrUpdateServiceSafepointFailed, err) - } - - defer func() { - cleanupCtx, cancel := context.WithTimeout(context.Background(), verifyGCSafepointCleanupTTL) - defer cancel() - _, cleanupErr := o.legacyClient.DeleteServiceSafePointV2(cleanupCtx, keyspaceMeta.Id, serviceID) - if cleanupErr == nil { - return - } - cleanupErr = cerrors.WrapError(cerrors.ErrDeleteServiceSafepointFailed, cleanupErr) - if runErr == nil { - runErr = cleanupErr - return - } - runErr = cerrors.Annotatef(runErr, "temporary service safepoint cleanup also failed: %v", cleanupErr) - }() - if minSafePoint > requestedSafePoint { - return cerrors.Annotatef( - cerrors.ErrUpdateServiceSafepointFailed.GenWithStackByArgs(), - "minimum service safepoint %d exceeds requested safepoint %d", - minSafePoint, - requestedSafePoint, - ) - } + cmd.Printf("WARNING: no service safepoint blocks GC safepoint advancement; ListDatabases at snapshot %d may fail with a safepoint error.\n", snapshotTS) databaseCount, err := o.listDatabases(ctx, o.keyspace, snapshotTS) if err != nil { diff --git a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go index f2c1272851..f848e95a4b 100644 --- a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go +++ b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go @@ -19,7 +19,6 @@ import ( stderrors "errors" "testing" - "github.com/pingcap/kvproto/pkg/keyspacepb" cerrors "github.com/pingcap/ticdc/pkg/errors" "github.com/spf13/cobra" "github.com/stretchr/testify/require" @@ -27,55 +26,15 @@ import ( ) type verifyGCSafepointTestPDClient struct { - physical int64 - logical int64 - keyspaceID uint32 - setServiceID string - setKeyspaceID uint32 - setTTL int64 - setSafePoint uint64 - minSafePoint uint64 - deleteServiceID string - deleteKeyspaceID uint32 - deleteContextErr error - deleteErr error - closed bool + physical int64 + logical int64 + closed bool } func (c *verifyGCSafepointTestPDClient) GetTS(context.Context) (int64, int64, error) { return c.physical, c.logical, nil } -func (c *verifyGCSafepointTestPDClient) LoadKeyspace(context.Context, string) (*keyspacepb.KeyspaceMeta, error) { - return &keyspacepb.KeyspaceMeta{Id: c.keyspaceID}, nil -} - -func (*verifyGCSafepointTestPDClient) GetMinServiceSafePointV2(context.Context, uint32) (uint64, error) { - return 0, nil -} - -func (c *verifyGCSafepointTestPDClient) SetServiceSafePointV2( - _ context.Context, keyspaceID uint32, serviceID string, ttl int64, safePoint uint64, -) (uint64, error) { - c.setKeyspaceID = keyspaceID - c.setServiceID = serviceID - c.setTTL = ttl - c.setSafePoint = safePoint - if c.minSafePoint != 0 { - return c.minSafePoint, nil - } - return safePoint, nil -} - -func (c *verifyGCSafepointTestPDClient) DeleteServiceSafePointV2( - ctx context.Context, keyspaceID uint32, serviceID string, -) (uint64, error) { - c.deleteKeyspaceID = keyspaceID - c.deleteServiceID = serviceID - c.deleteContextErr = ctx.Err() - return 0, c.deleteErr -} - func (c *verifyGCSafepointTestPDClient) Close() { c.closed = true } @@ -83,15 +42,13 @@ func (c *verifyGCSafepointTestPDClient) Close() { func TestVerifyGCSafepointRun(t *testing.T) { t.Run("success", func(t *testing.T) { pdClient := &verifyGCSafepointTestPDClient{ - physical: 1000, - logical: 7, - keyspaceID: 42, + physical: 1000, + logical: 7, } snapshotTS := oracle.ComposeTS(pdClient.physical, pdClient.logical) o := &verifyGCSafepointOptions{ - keyspace: "essential-v1", - pdClient: pdClient, - legacyClient: pdClient, + keyspace: "essential-v1", + pdClient: pdClient, listDatabases: func(_ context.Context, keyspace string, ts uint64) (int, error) { require.Equal(t, "essential-v1", keyspace) require.Equal(t, snapshotTS, ts) @@ -103,76 +60,27 @@ func TestVerifyGCSafepointRun(t *testing.T) { cmd.SetOut(output) require.NoError(t, o.run(cmd)) - require.Equal(t, snapshotTS+1, pdClient.setSafePoint) - require.Equal(t, uint32(42), pdClient.setKeyspaceID) - require.Equal(t, verifyGCSafepointTTLSeconds, pdClient.setTTL) - require.Equal(t, pdClient.setServiceID, pdClient.deleteServiceID) - require.Equal(t, uint32(42), pdClient.deleteKeyspaceID) - require.NoError(t, pdClient.deleteContextErr) require.True(t, pdClient.closed) + require.Contains(t, output.String(), "WARNING: no service safepoint blocks GC safepoint advancement") require.Contains(t, output.String(), "databases: 3") }) - t.Run("cleanup uses fresh context", func(t *testing.T) { - ctx, cancel := context.WithCancel(context.Background()) - pdClient := &verifyGCSafepointTestPDClient{physical: 1000, keyspaceID: 42} + t.Run("snapshot error is returned", func(t *testing.T) { + pdClient := &verifyGCSafepointTestPDClient{physical: 1000} o := &verifyGCSafepointOptions{ - keyspace: "essential-v1", - pdClient: pdClient, - legacyClient: pdClient, + keyspace: "essential-v1", + pdClient: pdClient, listDatabases: func(context.Context, string, uint64) (int, error) { - cancel() return 0, cerrors.WrapError(cerrors.ErrMetaListDatabases, stderrors.New("snapshot read failed")) }, } cmd := &cobra.Command{} - cmd.SetContext(ctx) + output := new(bytes.Buffer) + cmd.SetOut(output) err := o.run(cmd) require.ErrorContains(t, err, "meta store list databases") - require.NoError(t, pdClient.deleteContextErr) - require.True(t, pdClient.closed) - }) - - t.Run("rejected safepoint skips snapshot read", func(t *testing.T) { - pdClient := &verifyGCSafepointTestPDClient{physical: 1000, keyspaceID: 42} - snapshotTS := oracle.ComposeTS(pdClient.physical, pdClient.logical) - pdClient.minSafePoint = snapshotTS + 2 - listCalled := false - o := &verifyGCSafepointOptions{ - keyspace: "essential-v1", - pdClient: pdClient, - legacyClient: pdClient, - listDatabases: func(context.Context, string, uint64) (int, error) { - listCalled = true - return 0, nil - }, - } - - err := o.run(&cobra.Command{}) - require.ErrorContains(t, err, "minimum service safepoint") - require.False(t, listCalled) - require.Equal(t, pdClient.setServiceID, pdClient.deleteServiceID) - require.True(t, pdClient.closed) - }) - - t.Run("cleanup failure is returned", func(t *testing.T) { - pdClient := &verifyGCSafepointTestPDClient{ - physical: 1000, - keyspaceID: 42, - deleteErr: stderrors.New("delete failed"), - } - o := &verifyGCSafepointOptions{ - keyspace: "essential-v1", - pdClient: pdClient, - legacyClient: pdClient, - listDatabases: func(context.Context, string, uint64) (int, error) { - return 3, nil - }, - } - - err := o.run(&cobra.Command{}) - require.ErrorContains(t, err, "delete service safepoint failed") require.True(t, pdClient.closed) + require.Contains(t, output.String(), "may fail with a safepoint error") }) } From 456d8336bebfae967b4b6ba2fc6a62b934737374 Mon Sep 17 00:00:00 2001 From: Ping Yu Date: Tue, 4 Aug 2026 11:57:42 +0800 Subject: [PATCH 04/12] cli: read GC safepoint for verifier snapshot Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus Signed-off-by: Ping Yu --- cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go | 21 +++++--- .../cli_unsafe_verify_gc_safepoint_test.go | 54 ++++++++++++++----- 2 files changed, 56 insertions(+), 19 deletions(-) diff --git a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go index 920d090b26..e8220e2a06 100644 --- a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go +++ b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go @@ -17,6 +17,7 @@ import ( "context" "net/url" + "github.com/pingcap/kvproto/pkg/keyspacepb" "github.com/pingcap/ticdc/cmd/cdc/factory" "github.com/pingcap/ticdc/cmd/util" "github.com/pingcap/ticdc/pkg/common" @@ -27,11 +28,12 @@ import ( "github.com/pingcap/tidb/pkg/store/driver" "github.com/spf13/cobra" tikvconfig "github.com/tikv/client-go/v2/config" - "github.com/tikv/client-go/v2/oracle" + pdgc "github.com/tikv/pd/client/clients/gc" ) type verifyGCSafepointPDClient interface { - GetTS(ctx context.Context) (physical int64, logical int64, err error) + LoadKeyspace(ctx context.Context, keyspace string) (*keyspacepb.KeyspaceMeta, error) + GetGCStatesClient(keyspaceID uint32) pdgc.GCStatesClient Close() } @@ -61,11 +63,16 @@ func (o *verifyGCSafepointOptions) complete(f factory.Factory) error { func (o *verifyGCSafepointOptions) run(cmd *cobra.Command) error { defer o.pdClient.Close() ctx := cmd.Context() - physical, logical, err := o.pdClient.GetTS(ctx) + keyspaceMeta, err := o.pdClient.LoadKeyspace(ctx, o.keyspace) if err != nil { - return cerrors.WrapError(cerrors.ErrPDEtcdAPIError, err) + return cerrors.WrapError(cerrors.ErrLoadKeyspaceFailed, err) } - snapshotTS := oracle.ComposeTS(physical, logical) + gcState, err := o.pdClient.GetGCStatesClient(keyspaceMeta.Id).GetGCState(ctx) + if err != nil { + return cerrors.WrapError(cerrors.ErrGetGCBarrierFailed, err) + } + // Schema store uses the transaction safepoint as its initial metadata snapshot. + snapshotTS := gcState.TxnSafePoint cmd.Printf("WARNING: no service safepoint blocks GC safepoint advancement; ListDatabases at snapshot %d may fail with a safepoint error.\n", snapshotTS) databaseCount, err := o.listDatabases(ctx, o.keyspace, snapshotTS) @@ -77,7 +84,7 @@ func (o *verifyGCSafepointOptions) run(cmd *cobra.Command) error { } func listDatabasesAtSnapshot( - ctx context.Context, + _ context.Context, pdAddr string, credential *security.Credential, keyspace string, @@ -118,7 +125,7 @@ func newCmdVerifyGCSafepoint(f factory.Factory) *cobra.Command { o := &verifyGCSafepointOptions{} command := &cobra.Command{ Use: "verify-gc-safepoint", - Short: "Verify keyspace GC safepoint protection by listing databases at a protected snapshot", + Short: "Verify a keyspace GC safepoint by listing databases at its current snapshot", Args: cobra.NoArgs, Run: func(cmd *cobra.Command, _ []string) { util.CheckErr(o.complete(f)) diff --git a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go index f848e95a4b..0a2f0b2515 100644 --- a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go +++ b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go @@ -19,39 +19,64 @@ import ( stderrors "errors" "testing" + "github.com/pingcap/kvproto/pkg/keyspacepb" cerrors "github.com/pingcap/ticdc/pkg/errors" "github.com/spf13/cobra" "github.com/stretchr/testify/require" - "github.com/tikv/client-go/v2/oracle" + pdgc "github.com/tikv/pd/client/clients/gc" ) type verifyGCSafepointTestPDClient struct { - physical int64 - logical int64 - closed bool + keyspaceID uint32 + txnSafePoint uint64 + gcSafePoint uint64 + loadedKeyspace string + requestedKeyspaceID uint32 + closed bool } -func (c *verifyGCSafepointTestPDClient) GetTS(context.Context) (int64, int64, error) { - return c.physical, c.logical, nil +func (c *verifyGCSafepointTestPDClient) LoadKeyspace(_ context.Context, keyspace string) (*keyspacepb.KeyspaceMeta, error) { + c.loadedKeyspace = keyspace + return &keyspacepb.KeyspaceMeta{Id: c.keyspaceID}, nil +} + +func (c *verifyGCSafepointTestPDClient) GetGCStatesClient(keyspaceID uint32) pdgc.GCStatesClient { + c.requestedKeyspaceID = keyspaceID + return &verifyGCSafepointTestGCStatesClient{ + gcState: pdgc.NewGCStateWithoutGCBarriers( + keyspaceID, + c.txnSafePoint, + c.gcSafePoint, + ), + } } func (c *verifyGCSafepointTestPDClient) Close() { c.closed = true } +type verifyGCSafepointTestGCStatesClient struct { + pdgc.GCStatesClient + gcState pdgc.GCState +} + +func (c *verifyGCSafepointTestGCStatesClient) GetGCState(context.Context, ...pdgc.GCStatesAPIOption) (pdgc.GCState, error) { + return c.gcState, nil +} + func TestVerifyGCSafepointRun(t *testing.T) { - t.Run("success", func(t *testing.T) { + t.Run("uses the current keyspace transaction safepoint", func(t *testing.T) { pdClient := &verifyGCSafepointTestPDClient{ - physical: 1000, - logical: 7, + keyspaceID: 42, + txnSafePoint: 123, + gcSafePoint: 100, } - snapshotTS := oracle.ComposeTS(pdClient.physical, pdClient.logical) o := &verifyGCSafepointOptions{ keyspace: "essential-v1", pdClient: pdClient, listDatabases: func(_ context.Context, keyspace string, ts uint64) (int, error) { require.Equal(t, "essential-v1", keyspace) - require.Equal(t, snapshotTS, ts) + require.Equal(t, pdClient.txnSafePoint, ts) return 3, nil }, } @@ -60,13 +85,18 @@ func TestVerifyGCSafepointRun(t *testing.T) { cmd.SetOut(output) require.NoError(t, o.run(cmd)) + require.Equal(t, "essential-v1", pdClient.loadedKeyspace) + require.Equal(t, pdClient.keyspaceID, pdClient.requestedKeyspaceID) require.True(t, pdClient.closed) require.Contains(t, output.String(), "WARNING: no service safepoint blocks GC safepoint advancement") require.Contains(t, output.String(), "databases: 3") }) t.Run("snapshot error is returned", func(t *testing.T) { - pdClient := &verifyGCSafepointTestPDClient{physical: 1000} + pdClient := &verifyGCSafepointTestPDClient{ + keyspaceID: 42, + txnSafePoint: 123, + } o := &verifyGCSafepointOptions{ keyspace: "essential-v1", pdClient: pdClient, From ca77faf433c9e07e10562ca7e44a781c54d5eaaf Mon Sep 17 00:00:00 2001 From: Ping Yu Date: Tue, 4 Aug 2026 12:12:21 +0800 Subject: [PATCH 05/12] cli: support legacy safepoint verification Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus Signed-off-by: Ping Yu --- cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go | 31 +++++++++---- .../cli_unsafe_verify_gc_safepoint_test.go | 45 +++++++++++++++++++ 2 files changed, 68 insertions(+), 8 deletions(-) diff --git a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go index e8220e2a06..3ba63cb2f8 100644 --- a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go +++ b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go @@ -38,13 +38,15 @@ type verifyGCSafepointPDClient interface { } type verifyGCSafepointOptions struct { - keyspace string - pdClient verifyGCSafepointPDClient - listDatabases func(ctx context.Context, keyspace string, snapshotTS uint64) (int, error) + keyspace string + legacySafepoint bool + pdClient verifyGCSafepointPDClient + listDatabases func(ctx context.Context, keyspace string, snapshotTS uint64) (int, error) } func (o *verifyGCSafepointOptions) addFlags(cmd *cobra.Command) { cmd.Flags().StringVarP(&o.keyspace, "keyspace", "k", "", "Keyspace to verify") + cmd.Flags().BoolVar(&o.legacySafepoint, "legacy-safepoint", false, "Read the keyspace-v2 minimum service safepoint") _ = cmd.MarkFlagRequired("keyspace") } @@ -67,12 +69,25 @@ func (o *verifyGCSafepointOptions) run(cmd *cobra.Command) error { if err != nil { return cerrors.WrapError(cerrors.ErrLoadKeyspaceFailed, err) } - gcState, err := o.pdClient.GetGCStatesClient(keyspaceMeta.Id).GetGCState(ctx) - if err != nil { - return cerrors.WrapError(cerrors.ErrGetGCBarrierFailed, err) + + var snapshotTS uint64 + if o.legacySafepoint { + legacyClient, ok := o.pdClient.(pdgc.LegacyClientV2) + if !ok { + return cerrors.ErrGetServiceSafepointFailed.GenWithStackByArgs("PD client does not support LegacyClientV2") + } + snapshotTS, err = legacyClient.GetMinServiceSafePointV2(ctx, keyspaceMeta.Id) + if err != nil { + return cerrors.WrapError(cerrors.ErrGetServiceSafepointFailed, err) + } + } else { + gcState, err := o.pdClient.GetGCStatesClient(keyspaceMeta.Id).GetGCState(ctx) + if err != nil { + return cerrors.WrapError(cerrors.ErrGetGCBarrierFailed, err) + } + // Schema store uses the transaction safepoint as its initial metadata snapshot. + snapshotTS = gcState.TxnSafePoint } - // Schema store uses the transaction safepoint as its initial metadata snapshot. - snapshotTS := gcState.TxnSafePoint cmd.Printf("WARNING: no service safepoint blocks GC safepoint advancement; ListDatabases at snapshot %d may fail with a safepoint error.\n", snapshotTS) databaseCount, err := o.listDatabases(ctx, o.keyspace, snapshotTS) diff --git a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go index 0a2f0b2515..272ea238ff 100644 --- a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go +++ b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go @@ -27,11 +27,15 @@ import ( ) type verifyGCSafepointTestPDClient struct { + pdgc.LegacyClientV2 keyspaceID uint32 txnSafePoint uint64 gcSafePoint uint64 + legacySafePoint uint64 loadedKeyspace string requestedKeyspaceID uint32 + legacyKeyspaceID uint32 + gcStateRequested bool closed bool } @@ -41,6 +45,7 @@ func (c *verifyGCSafepointTestPDClient) LoadKeyspace(_ context.Context, keyspace } func (c *verifyGCSafepointTestPDClient) GetGCStatesClient(keyspaceID uint32) pdgc.GCStatesClient { + c.gcStateRequested = true c.requestedKeyspaceID = keyspaceID return &verifyGCSafepointTestGCStatesClient{ gcState: pdgc.NewGCStateWithoutGCBarriers( @@ -51,6 +56,11 @@ func (c *verifyGCSafepointTestPDClient) GetGCStatesClient(keyspaceID uint32) pdg } } +func (c *verifyGCSafepointTestPDClient) GetMinServiceSafePointV2(_ context.Context, keyspaceID uint32) (uint64, error) { + c.legacyKeyspaceID = keyspaceID + return c.legacySafePoint, nil +} + func (c *verifyGCSafepointTestPDClient) Close() { c.closed = true } @@ -92,6 +102,32 @@ func TestVerifyGCSafepointRun(t *testing.T) { require.Contains(t, output.String(), "databases: 3") }) + t.Run("uses the legacy minimum service safepoint when requested", func(t *testing.T) { + pdClient := &verifyGCSafepointTestPDClient{ + keyspaceID: 42, + txnSafePoint: 123, + legacySafePoint: 456, + } + o := &verifyGCSafepointOptions{ + keyspace: "essential-v1", + legacySafepoint: true, + pdClient: pdClient, + listDatabases: func(_ context.Context, keyspace string, ts uint64) (int, error) { + require.Equal(t, "essential-v1", keyspace) + require.Equal(t, pdClient.legacySafePoint, ts) + return 3, nil + }, + } + cmd := &cobra.Command{} + cmd.SetContext(context.Background()) + cmd.SetOut(new(bytes.Buffer)) + + require.NoError(t, o.run(cmd)) + require.Equal(t, pdClient.keyspaceID, pdClient.legacyKeyspaceID) + require.False(t, pdClient.gcStateRequested) + require.True(t, pdClient.closed) + }) + t.Run("snapshot error is returned", func(t *testing.T) { pdClient := &verifyGCSafepointTestPDClient{ keyspaceID: 42, @@ -114,3 +150,12 @@ func TestVerifyGCSafepointRun(t *testing.T) { require.Contains(t, output.String(), "may fail with a safepoint error") }) } + +func TestVerifyGCSafepointFlags(t *testing.T) { + o := &verifyGCSafepointOptions{} + cmd := &cobra.Command{} + o.addFlags(cmd) + + require.NoError(t, cmd.ParseFlags([]string{"--legacy-safepoint"})) + require.True(t, o.legacySafepoint) +} From ff414506343816caeb7b97779e858699b3a6be57 Mon Sep 17 00:00:00 2001 From: Ping Yu Date: Tue, 4 Aug 2026 16:33:00 +0800 Subject: [PATCH 06/12] disable PD route client Signed-off-by: Ping Yu --- cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go | 4 +++ cmd/cdc/factory/factory_impl.go | 1 + pkg/upstream/upstream.go | 6 ++-- pkg/upstream/upstream_test.go | 33 +++++++++++++++++++ 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go index 3ba63cb2f8..c7981c1d2e 100644 --- a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go +++ b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go @@ -23,6 +23,7 @@ import ( "github.com/pingcap/ticdc/pkg/common" cerrors "github.com/pingcap/ticdc/pkg/errors" "github.com/pingcap/ticdc/pkg/security" + "github.com/pingcap/ticdc/pkg/upstream" tidbkv "github.com/pingcap/tidb/pkg/kv" "github.com/pingcap/tidb/pkg/meta" "github.com/pingcap/tidb/pkg/store/driver" @@ -128,6 +129,9 @@ func listDatabasesAtSnapshot( return 0, cerrors.WrapError(cerrors.ErrNewStore, err) } defer func() { _ = tiStore.Close() }() + if err := upstream.DisablePDRouterClient(tiStore); err != nil { + return 0, cerrors.WrapError(cerrors.ErrNewStore, err) + } databases, err := meta.NewReader(tiStore.GetSnapshot(tidbkv.NewVersion(snapshotTS))).ListDatabases() if err != nil { diff --git a/cmd/cdc/factory/factory_impl.go b/cmd/cdc/factory/factory_impl.go index 31b8c2fd09..c79b1ffe39 100644 --- a/cmd/cdc/factory/factory_impl.go +++ b/cmd/cdc/factory/factory_impl.go @@ -138,6 +138,7 @@ func (f *factoryImpl) PdClient() (pd.Client, error) { pdClient, err := pd.NewClientWithContext( f.ctx, "cdc-factory", pdEndpoints, credential.PDSecurityOption(), pdopt.WithMaxErrorRetry(maxGetPDClientRetryTimes), + pdopt.WithEnableRouterClient(false), // TODO(hi-rustin): add gRPC metrics to Options. // See also: https://github.com/pingcap/tiflow/pull/2341#discussion_r673032407. pdopt.WithGRPCDialOptions( diff --git a/pkg/upstream/upstream.go b/pkg/upstream/upstream.go index d407c75a16..ea21bb84ff 100644 --- a/pkg/upstream/upstream.go +++ b/pkg/upstream/upstream.go @@ -131,7 +131,7 @@ func CreateTiStore(ctx context.Context, urls string, credential *security.Creden if err != nil { return err } - return disablePDRouterClient(tiStore) + return DisablePDRouterClient(tiStore) }, retry.WithMaxTries(defaultMaxRetry), retry.WithBackoffBaseDelay(200), retry.WithBackoffMaxDelay(4000), @@ -144,7 +144,8 @@ func CreateTiStore(ctx context.Context, urls string, credential *security.Creden return tiStore, nil } -func disablePDRouterClient(storage tidbkv.Storage) error { +// DisablePDRouterClient disables the streaming PD router used by a TiKV storage. +func DisablePDRouterClient(storage tidbkv.Storage) error { provider, ok := storage.(pdClientProvider) if !ok { return nil @@ -179,6 +180,7 @@ func initUpstream(ctx context.Context, up *Upstream, cfg *NodeTopologyCfg) (err if !up.isDefaultUpstream { up.PDClient, err = pd.NewClientWithContext( ctx, "cdc-upstream", up.PdEndpoints, up.SecurityConfig.PDSecurityOption(), + pdopt.WithEnableRouterClient(false), // the default `timeout` is 3s, maybe too small if the pd is busy, // set to 10s to avoid frequent timeout. pdopt.WithCustomTimeoutOption(10*time.Second), diff --git a/pkg/upstream/upstream_test.go b/pkg/upstream/upstream_test.go index d9388cfb43..dfc7885364 100644 --- a/pkg/upstream/upstream_test.go +++ b/pkg/upstream/upstream_test.go @@ -23,14 +23,38 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/ticdc/pkg/etcd" "github.com/pingcap/ticdc/pkg/node" + tidbkv "github.com/pingcap/tidb/pkg/kv" "github.com/prometheus/client_golang/prometheus" "github.com/stretchr/testify/require" + pd "github.com/tikv/pd/client" + pdopt "github.com/tikv/pd/client/opt" "go.etcd.io/etcd/client/pkg/v3/logutil" clientv3 "go.etcd.io/etcd/client/v3" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) +type pdRouterOptionRecorder struct { + pd.Client + option pdopt.DynamicOption + value any +} + +func (c *pdRouterOptionRecorder) UpdateOption(option pdopt.DynamicOption, value any) error { + c.option = option + c.value = value + return nil +} + +type pdClientStorage struct { + tidbkv.Storage + client pd.Client +} + +func (s pdClientStorage) GetPDClient() pd.Client { + return s.client +} + func TestUpstreamShouldClose(t *testing.T) { t.Parallel() @@ -149,3 +173,12 @@ func TestIsCreateTiStoreRetryable(t *testing.T) { require.False(t, isCreateTiStoreRetryable(canceledCtx, context.Canceled)) require.False(t, isCreateTiStoreRetryable(canceledCtx, errors.Trace(context.Canceled))) } + +func TestDisablePDRouterClient(t *testing.T) { + t.Parallel() + + client := &pdRouterOptionRecorder{} + require.NoError(t, DisablePDRouterClient(pdClientStorage{client: client})) + require.Equal(t, pdopt.EnableRouterClient, client.option) + require.Equal(t, false, client.value) +} From f2964f9ce2f94ee511de184b4dae7d8b691c14cf Mon Sep 17 00:00:00 2001 From: Ping Yu Date: Tue, 4 Aug 2026 22:16:58 +0800 Subject: [PATCH 07/12] fix CI error Signed-off-by: Ping Yu --- cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go | 18 +++++++++--------- .../cli/cli_unsafe_verify_gc_safepoint_test.go | 5 ++--- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go index c7981c1d2e..2163b63711 100644 --- a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go +++ b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go @@ -21,7 +21,7 @@ import ( "github.com/pingcap/ticdc/cmd/cdc/factory" "github.com/pingcap/ticdc/cmd/util" "github.com/pingcap/ticdc/pkg/common" - cerrors "github.com/pingcap/ticdc/pkg/errors" + "github.com/pingcap/ticdc/pkg/errors" "github.com/pingcap/ticdc/pkg/security" "github.com/pingcap/ticdc/pkg/upstream" tidbkv "github.com/pingcap/tidb/pkg/kv" @@ -68,23 +68,23 @@ func (o *verifyGCSafepointOptions) run(cmd *cobra.Command) error { ctx := cmd.Context() keyspaceMeta, err := o.pdClient.LoadKeyspace(ctx, o.keyspace) if err != nil { - return cerrors.WrapError(cerrors.ErrLoadKeyspaceFailed, err) + return errors.WrapError(errors.ErrLoadKeyspaceFailed, err) } var snapshotTS uint64 if o.legacySafepoint { legacyClient, ok := o.pdClient.(pdgc.LegacyClientV2) if !ok { - return cerrors.ErrGetServiceSafepointFailed.GenWithStackByArgs("PD client does not support LegacyClientV2") + return errors.ErrGetServiceSafepointFailed.GenWithStackByArgs("PD client does not support LegacyClientV2") } snapshotTS, err = legacyClient.GetMinServiceSafePointV2(ctx, keyspaceMeta.Id) if err != nil { - return cerrors.WrapError(cerrors.ErrGetServiceSafepointFailed, err) + return errors.WrapError(errors.ErrGetServiceSafepointFailed, err) } } else { gcState, err := o.pdClient.GetGCStatesClient(keyspaceMeta.Id).GetGCState(ctx) if err != nil { - return cerrors.WrapError(cerrors.ErrGetGCBarrierFailed, err) + return errors.WrapError(errors.ErrGetGCBarrierFailed, err) } // Schema store uses the transaction safepoint as its initial metadata snapshot. snapshotTS = gcState.TxnSafePoint @@ -108,7 +108,7 @@ func listDatabasesAtSnapshot( ) (int, error) { pdURLs, err := common.NewURLsValue(pdAddr) if err != nil { - return 0, cerrors.WrapError(cerrors.ErrNewStore, err) + return 0, errors.WrapError(errors.ErrNewStore, err) } tiURL := &url.URL{Scheme: "tikv", Host: pdURLs.HostString()} query := tiURL.Query() @@ -126,16 +126,16 @@ func listDatabasesAtSnapshot( tiURL.String(), driver.WithSecurity(securityConfig), ) if err != nil { - return 0, cerrors.WrapError(cerrors.ErrNewStore, err) + return 0, errors.WrapError(errors.ErrNewStore, err) } defer func() { _ = tiStore.Close() }() if err := upstream.DisablePDRouterClient(tiStore); err != nil { - return 0, cerrors.WrapError(cerrors.ErrNewStore, err) + return 0, errors.WrapError(errors.ErrNewStore, err) } databases, err := meta.NewReader(tiStore.GetSnapshot(tidbkv.NewVersion(snapshotTS))).ListDatabases() if err != nil { - return 0, cerrors.WrapError(cerrors.ErrMetaListDatabases, err) + return 0, errors.WrapError(errors.ErrMetaListDatabases, err) } return len(databases), nil } diff --git a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go index 272ea238ff..650ce3cae3 100644 --- a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go +++ b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go @@ -16,11 +16,10 @@ package cli import ( "bytes" "context" - stderrors "errors" "testing" "github.com/pingcap/kvproto/pkg/keyspacepb" - cerrors "github.com/pingcap/ticdc/pkg/errors" + "github.com/pingcap/ticdc/pkg/errors" "github.com/spf13/cobra" "github.com/stretchr/testify/require" pdgc "github.com/tikv/pd/client/clients/gc" @@ -137,7 +136,7 @@ func TestVerifyGCSafepointRun(t *testing.T) { keyspace: "essential-v1", pdClient: pdClient, listDatabases: func(context.Context, string, uint64) (int, error) { - return 0, cerrors.WrapError(cerrors.ErrMetaListDatabases, stderrors.New("snapshot read failed")) + return 0, errors.WrapError(errors.ErrMetaListDatabases, context.Canceled) }, } cmd := &cobra.Command{} From ffe266264d58c01408f06013c869be0075d10185 Mon Sep 17 00:00:00 2001 From: Ping Yu Date: Wed, 5 Aug 2026 10:40:07 +0800 Subject: [PATCH 08/12] *: bump CSE compatibility dependencies Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus Signed-off-by: Ping Yu --- go.mod | 6 +++--- go.sum | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 7b7016fb64..594c4a553b 100644 --- a/go.mod +++ b/go.mod @@ -394,7 +394,7 @@ replace ( // copy from TiDB github.com/go-ldap/ldap/v3 v3.4.4 => github.com/yangkeao/ldap/v3 v3.4.5-0.20230421065457-369a3bab1117 - github.com/pingcap/tidb => github.com/pingyu/tidb v1.1.0-beta.0.20260803170810-5f67e65a3614 - github.com/pingcap/tidb/pkg/parser => github.com/pingyu/tidb/pkg/parser v0.0.0-20260803170810-5f67e65a3614 - github.com/tikv/client-go/v2 => github.com/pingyu/client-go/v2 v2.0.1-0.20260803170505-11cb9ad8088b + github.com/pingcap/tidb => github.com/pingyu/tidb v1.1.0-beta.0.20260805023039-debbb81f8e59 + github.com/pingcap/tidb/pkg/parser => github.com/pingyu/tidb/pkg/parser v0.0.0-20260805023039-debbb81f8e59 + github.com/tikv/client-go/v2 => github.com/pingyu/client-go/v2 v2.0.1-0.20260805022548-e8984187ef67 ) diff --git a/go.sum b/go.sum index f240ff5527..986ea3d70c 100644 --- a/go.sum +++ b/go.sum @@ -770,10 +770,16 @@ github.com/pingcap/tipb v0.0.0-20260623093813-5f9928e91afe h1:9I5GHZesmR+hv68t00 github.com/pingcap/tipb v0.0.0-20260623093813-5f9928e91afe/go.mod h1:RM8iRcMalzOthG2XJxnNBniM4xFGb/lDwHUwqkaVzt4= github.com/pingyu/client-go/v2 v2.0.1-0.20260803170505-11cb9ad8088b h1:uBHv7Y7ZUwrCONnwvo/+zwmmIezHd7Wnibps4Lbhykk= github.com/pingyu/client-go/v2 v2.0.1-0.20260803170505-11cb9ad8088b/go.mod h1:kNePJmoqcbd+eTTzZmzZy40rX8LjI6qFYCzdV66cu18= +github.com/pingyu/client-go/v2 v2.0.1-0.20260805022548-e8984187ef67 h1:vtHSY/KOd16FFxT0L8SJOkj0L2M5lpEUOxw4YI+Q9vc= +github.com/pingyu/client-go/v2 v2.0.1-0.20260805022548-e8984187ef67/go.mod h1:kNePJmoqcbd+eTTzZmzZy40rX8LjI6qFYCzdV66cu18= github.com/pingyu/tidb v1.1.0-beta.0.20260803170810-5f67e65a3614 h1:JR7pKrKJLcwbjx2ROhLKXOosf1GUGPQF/ZRLQkU+HO4= github.com/pingyu/tidb v1.1.0-beta.0.20260803170810-5f67e65a3614/go.mod h1:CZ5xxE/a7/rbGwZgqzvfAyMhvwWxC9QKQ1iYf1iBiVA= +github.com/pingyu/tidb v1.1.0-beta.0.20260805023039-debbb81f8e59 h1:eq/F2t7rhRo7BGmndAwh6GnlA4vHpUfRyEQQKjjewM4= +github.com/pingyu/tidb v1.1.0-beta.0.20260805023039-debbb81f8e59/go.mod h1:cdwQvyoWiEoDsyGkdHfDoNLyPSIEo0pI8GXS2UBM97A= github.com/pingyu/tidb/pkg/parser v0.0.0-20260803170810-5f67e65a3614 h1:kOSlKWoBWxpsqHUH6F8l1ibeoelQsJdi+H5tMyAXb6w= github.com/pingyu/tidb/pkg/parser v0.0.0-20260803170810-5f67e65a3614/go.mod h1:zDLDsfNBU5+L6T4J9/OgWAHc/WZvMUjbpgHqQ/t3yKo= +github.com/pingyu/tidb/pkg/parser v0.0.0-20260805023039-debbb81f8e59 h1:B7LUhI0pjywCd9JeU3Q4YwdrHxq9tE7D/zttOgbcgSo= +github.com/pingyu/tidb/pkg/parser v0.0.0-20260805023039-debbb81f8e59/go.mod h1:zDLDsfNBU5+L6T4J9/OgWAHc/WZvMUjbpgHqQ/t3yKo= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= From 60863de9ccb39e85181d033704dcd0ece654e249 Mon Sep 17 00:00:00 2001 From: Ping Yu Date: Wed, 5 Aug 2026 11:50:47 +0800 Subject: [PATCH 09/12] *: tidy CSE compatibility checksums Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus Signed-off-by: Ping Yu --- go.sum | 6 ------ 1 file changed, 6 deletions(-) diff --git a/go.sum b/go.sum index 986ea3d70c..ddae2d7e08 100644 --- a/go.sum +++ b/go.sum @@ -768,16 +768,10 @@ github.com/pingcap/tiflow v0.0.0-20260723070929-e8736df4fe74 h1:nGUVwdQMqd590TVO github.com/pingcap/tiflow v0.0.0-20260723070929-e8736df4fe74/go.mod h1:t5vaLtgdBIX7TR8yY3AuIq+hUsbJio8o5j1WBsoX7SU= github.com/pingcap/tipb v0.0.0-20260623093813-5f9928e91afe h1:9I5GHZesmR+hv68t00BO7tayKMFfywi+hlpn119GscM= github.com/pingcap/tipb v0.0.0-20260623093813-5f9928e91afe/go.mod h1:RM8iRcMalzOthG2XJxnNBniM4xFGb/lDwHUwqkaVzt4= -github.com/pingyu/client-go/v2 v2.0.1-0.20260803170505-11cb9ad8088b h1:uBHv7Y7ZUwrCONnwvo/+zwmmIezHd7Wnibps4Lbhykk= -github.com/pingyu/client-go/v2 v2.0.1-0.20260803170505-11cb9ad8088b/go.mod h1:kNePJmoqcbd+eTTzZmzZy40rX8LjI6qFYCzdV66cu18= github.com/pingyu/client-go/v2 v2.0.1-0.20260805022548-e8984187ef67 h1:vtHSY/KOd16FFxT0L8SJOkj0L2M5lpEUOxw4YI+Q9vc= github.com/pingyu/client-go/v2 v2.0.1-0.20260805022548-e8984187ef67/go.mod h1:kNePJmoqcbd+eTTzZmzZy40rX8LjI6qFYCzdV66cu18= -github.com/pingyu/tidb v1.1.0-beta.0.20260803170810-5f67e65a3614 h1:JR7pKrKJLcwbjx2ROhLKXOosf1GUGPQF/ZRLQkU+HO4= -github.com/pingyu/tidb v1.1.0-beta.0.20260803170810-5f67e65a3614/go.mod h1:CZ5xxE/a7/rbGwZgqzvfAyMhvwWxC9QKQ1iYf1iBiVA= github.com/pingyu/tidb v1.1.0-beta.0.20260805023039-debbb81f8e59 h1:eq/F2t7rhRo7BGmndAwh6GnlA4vHpUfRyEQQKjjewM4= github.com/pingyu/tidb v1.1.0-beta.0.20260805023039-debbb81f8e59/go.mod h1:cdwQvyoWiEoDsyGkdHfDoNLyPSIEo0pI8GXS2UBM97A= -github.com/pingyu/tidb/pkg/parser v0.0.0-20260803170810-5f67e65a3614 h1:kOSlKWoBWxpsqHUH6F8l1ibeoelQsJdi+H5tMyAXb6w= -github.com/pingyu/tidb/pkg/parser v0.0.0-20260803170810-5f67e65a3614/go.mod h1:zDLDsfNBU5+L6T4J9/OgWAHc/WZvMUjbpgHqQ/t3yKo= github.com/pingyu/tidb/pkg/parser v0.0.0-20260805023039-debbb81f8e59 h1:B7LUhI0pjywCd9JeU3Q4YwdrHxq9tE7D/zttOgbcgSo= github.com/pingyu/tidb/pkg/parser v0.0.0-20260805023039-debbb81f8e59/go.mod h1:zDLDsfNBU5+L6T4J9/OgWAHc/WZvMUjbpgHqQ/t3yKo= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= From ecd24fbf68f10de74395c1d23e52dbe59c513751 Mon Sep 17 00:00:00 2001 From: Ping Yu Date: Wed, 5 Aug 2026 16:13:36 +0800 Subject: [PATCH 10/12] adapt api v3 Signed-off-by: Ping Yu --- api/middleware/authenticate_middleware.go | 2 +- api/middleware/middleware_nextgen_test.go | 12 +-- api/v2/changefeed.go | 12 +-- api/v2/changefeed_test.go | 4 +- api/v2/unsafe.go | 6 +- cmd/cdc/cli/cli_unsafe_reset.go | 4 +- cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go | 4 +- .../cli_unsafe_verify_gc_safepoint_test.go | 2 +- go.mod | 40 +++++----- go.sum | 75 +++++++++---------- maintainer/maintainer_manager_test.go | 8 +- pkg/common/span_op.go | 2 +- pkg/keyspace/keyspace_manager.go | 4 +- 13 files changed, 85 insertions(+), 90 deletions(-) diff --git a/api/middleware/authenticate_middleware.go b/api/middleware/authenticate_middleware.go index cc4cf74af5..19b95927a3 100644 --- a/api/middleware/authenticate_middleware.go +++ b/api/middleware/authenticate_middleware.go @@ -67,7 +67,7 @@ func verify(ctx *gin.Context, etcdCli etcd.Client) error { // verifyTiDBUser verify whether the username and password are valid in TiDB. It does the validation via // the successfully build of a connection with upstream TiDB with the username and password. - tidbs, err := upstream.FetchTiDBTopology(ctx, etcdCli, keyspaceMeta.Id) + tidbs, err := upstream.FetchTiDBTopology(ctx, etcdCli, keyspaceMeta.GetId()) if err != nil { return errors.Trace(err) } diff --git a/api/middleware/middleware_nextgen_test.go b/api/middleware/middleware_nextgen_test.go index 9389bc97aa..3f41a3bac3 100644 --- a/api/middleware/middleware_nextgen_test.go +++ b/api/middleware/middleware_nextgen_test.go @@ -75,18 +75,18 @@ func TestKeyspaceCheckerMiddleware(t *testing.T) { keyspace: "success", init: func(t *testing.T, mock *keyspace.MockManager) { mock.EXPECT().LoadKeyspace(gomock.Any(), "success").Return(&keyspacepb.KeyspaceMeta{ - Id: 1, - Name: "kespace1", - State: keyspacepb.KeyspaceState_ENABLED, + Keyspace: &keyspacepb.KeyspaceMeta_Id{Id: 1}, + Name: "kespace1", + State: keyspacepb.KeyspaceState_ENABLED, }, nil) }, expectedStatus: http.StatusOK, expectedAbort: false, expectedBodyContains: "", expectedMeta: &keyspacepb.KeyspaceMeta{ - Id: 1, - Name: "kespace1", - State: keyspacepb.KeyspaceState_ENABLED, + Keyspace: &keyspacepb.KeyspaceMeta_Id{Id: 1}, + Name: "kespace1", + State: keyspacepb.KeyspaceState_ENABLED, }, }, } diff --git a/api/v2/changefeed.go b/api/v2/changefeed.go index 4b167d12cb..89b7f16460 100644 --- a/api/v2/changefeed.go +++ b/api/v2/changefeed.go @@ -221,7 +221,7 @@ func (h *OpenAPIV2) CreateChangefeed(c *gin.Context) { ctx, h.server.GetPdClient(), createGcServiceID, - keyspaceMeta.Id, + keyspaceMeta.GetId(), changefeedID, ensureTTL, cfg.StartTs); err != nil { if !errors.ErrStartTsBeforeGC.Equal(err) { @@ -240,7 +240,7 @@ func (h *OpenAPIV2) CreateChangefeed(c *gin.Context) { undoErr := gc.UndoEnsureChangefeedStartTsSafety( ctx, pdClient, - keyspaceMeta.Id, + keyspaceMeta.GetId(), createGcServiceID, changefeedID, ) @@ -268,7 +268,7 @@ func (h *OpenAPIV2) CreateChangefeed(c *gin.Context) { // We create a new context here. schemaCxt := context.Background() if err = schemaStore.RegisterKeyspace(schemaCxt, common.KeyspaceMeta{ - ID: keyspaceMeta.Id, + ID: keyspaceMeta.GetId(), Name: keyspaceMeta.Name, }); err != nil { _ = c.Error(err) @@ -304,7 +304,7 @@ func (h *OpenAPIV2) CreateChangefeed(c *gin.Context) { Config: replicaCfg, State: config.StateNormal, CreatorVersion: version.ReleaseVersion, - KeyspaceID: keyspaceMeta.Id, + KeyspaceID: keyspaceMeta.GetId(), } // verify sinkURI @@ -826,7 +826,7 @@ func (h *OpenAPIV2) ResumeChangefeed(c *gin.Context) { ctx, h.server.GetPdClient(), resumeGcServiceID, - keyspaceMeta.Id, + keyspaceMeta.GetId(), cfInfo.ChangefeedID, newCheckpointTs); err != nil { _ = c.Error(err) @@ -840,7 +840,7 @@ func (h *OpenAPIV2) ResumeChangefeed(c *gin.Context) { undoErr := gc.UndoEnsureChangefeedStartTsSafety( ctx, h.server.GetPdClient(), - keyspaceMeta.Id, + keyspaceMeta.GetId(), resumeGcServiceID, cfInfo.ChangefeedID, ) diff --git a/api/v2/changefeed_test.go b/api/v2/changefeed_test.go index a8594ffa1c..4085a6cb73 100644 --- a/api/v2/changefeed_test.go +++ b/api/v2/changefeed_test.go @@ -70,8 +70,8 @@ func TestResumeChangefeedRejectsNormalBeforeGC(t *testing.T) { c.Request = httptest.NewRequest(http.MethodPost, "/api/v2/changefeeds/test/resume?keyspace=default", nil) c.Params = gin.Params{{Key: api.APIOpVarChangefeedID, Value: "test"}} c.Set("ctx-keyspace", &keyspacepb.KeyspaceMeta{ - Id: common.DefaultKeyspaceID, - State: keyspacepb.KeyspaceState_ENABLED, + Keyspace: &keyspacepb.KeyspaceMeta_Id{Id: common.DefaultKeyspaceID}, + State: keyspacepb.KeyspaceState_ENABLED, }) h.ResumeChangefeed(c) diff --git a/api/v2/unsafe.go b/api/v2/unsafe.go index 629b6ea41f..21bd4acdbd 100644 --- a/api/v2/unsafe.go +++ b/api/v2/unsafe.go @@ -59,10 +59,10 @@ func (h *OpenAPIV2) ResolveLock(c *gin.Context) { keyspaceMeta := middleware.GetKeyspaceFromContext(c) txnResolver := txnutil.NewLockerResolver() - if err := txnResolver.Resolve(schemaCxt, keyspaceMeta.Id, resolveLockReq.RegionID, resolveLockReq.Ts); err != nil { + if err := txnResolver.Resolve(schemaCxt, keyspaceMeta.GetId(), resolveLockReq.RegionID, resolveLockReq.Ts); err != nil { log.Error( "resolve lock failed", - zap.Uint32("keyspaceID", keyspaceMeta.Id), + zap.Uint32("keyspaceID", keyspaceMeta.GetId()), zap.Uint64("regionID", resolveLockReq.RegionID), zap.Uint64("resolveLockTs", resolveLockReq.Ts), zap.Error(err), @@ -87,7 +87,7 @@ func (h *OpenAPIV2) DeleteServiceGcSafePoint(c *gin.Context) { err := gc.UnifyDeleteGcSafepoint( c, pdClient, - keyspaceMeta.Id, + keyspaceMeta.GetId(), h.server.GetEtcdClient().GetGCServiceID(), ) if err != nil { diff --git a/cmd/cdc/cli/cli_unsafe_reset.go b/cmd/cdc/cli/cli_unsafe_reset.go index 086fd8fa9d..fa6c6fe95c 100644 --- a/cmd/cdc/cli/cli_unsafe_reset.go +++ b/cmd/cdc/cli/cli_unsafe_reset.go @@ -139,9 +139,9 @@ func removeKeyspaceGCBarrier(ctx context.Context, pdCli pd.Client, serviceID str log.Warn("load keyspace error", zap.String("keyspace", keyspace), zap.Error(err)) continue } - err = gc.UnifyDeleteGcSafepoint(ctx, pdCli, keyspaceMeta.Id, serviceID) + err = gc.UnifyDeleteGcSafepoint(ctx, pdCli, keyspaceMeta.GetId(), serviceID) if err != nil { - log.Warn("DeleteGcSafepoint error", zap.Uint32("keyspaceID", keyspaceMeta.Id), zap.String("keyspace", keyspace), zap.String("serviceID", serviceID), zap.Error(err)) + log.Warn("DeleteGcSafepoint error", zap.Uint32("keyspaceID", keyspaceMeta.GetId()), zap.String("keyspace", keyspace), zap.String("serviceID", serviceID), zap.Error(err)) continue } } diff --git a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go index 2163b63711..b750dbc850 100644 --- a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go +++ b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go @@ -77,12 +77,12 @@ func (o *verifyGCSafepointOptions) run(cmd *cobra.Command) error { if !ok { return errors.ErrGetServiceSafepointFailed.GenWithStackByArgs("PD client does not support LegacyClientV2") } - snapshotTS, err = legacyClient.GetMinServiceSafePointV2(ctx, keyspaceMeta.Id) + snapshotTS, err = legacyClient.GetMinServiceSafePointV2(ctx, keyspaceMeta.GetId()) if err != nil { return errors.WrapError(errors.ErrGetServiceSafepointFailed, err) } } else { - gcState, err := o.pdClient.GetGCStatesClient(keyspaceMeta.Id).GetGCState(ctx) + gcState, err := o.pdClient.GetGCStatesClient(keyspaceMeta.GetId()).GetGCState(ctx) if err != nil { return errors.WrapError(errors.ErrGetGCBarrierFailed, err) } diff --git a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go index 650ce3cae3..51747fe38b 100644 --- a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go +++ b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go @@ -40,7 +40,7 @@ type verifyGCSafepointTestPDClient struct { func (c *verifyGCSafepointTestPDClient) LoadKeyspace(_ context.Context, keyspace string) (*keyspacepb.KeyspaceMeta, error) { c.loadedKeyspace = keyspace - return &keyspacepb.KeyspaceMeta{Id: c.keyspaceID}, nil + return &keyspacepb.KeyspaceMeta{Keyspace: &keyspacepb.KeyspaceMeta_Id{Id: c.keyspaceID}}, nil } func (c *verifyGCSafepointTestPDClient) GetGCStatesClient(keyspaceID uint32) pdgc.GCStatesClient { diff --git a/go.mod b/go.mod index 594c4a553b..bbaf81f246 100644 --- a/go.mod +++ b/go.mod @@ -52,12 +52,12 @@ require ( github.com/pierrec/lz4/v4 v4.1.27 github.com/pingcap/errors v0.11.5-0.20260508054701-306e305bcf41 github.com/pingcap/failpoint v0.0.0-20240528011301-b51a646c7c86 - github.com/pingcap/kvproto v0.0.0-20260721064811-683dad8fa368 + github.com/pingcap/kvproto v0.0.0-20260724054804-059694ae4472 github.com/pingcap/log v1.1.1-0.20250917021125-19901e015dc9 github.com/pingcap/sysutil v1.0.1-0.20240311050922-ae81ee01f3a5 - github.com/pingcap/tidb v1.1.0-beta.0.20260625145450-3e4ee9fc99e7 - github.com/pingcap/tidb-dashboard v0.0.0-20260316045729-aa6178a60657 - github.com/pingcap/tidb/pkg/parser v0.0.0-20260616034257-3adc8ec71ef3 + github.com/pingcap/tidb v1.1.0-beta.0.20260724070715-6a65a1e5f7f5 + github.com/pingcap/tidb-dashboard v0.0.0-20260424073400-8efaf2f70a41 + github.com/pingcap/tidb/pkg/parser v0.0.0-20260724070715-6a65a1e5f7f5 github.com/pingcap/tiflow v0.0.0-20260723070929-e8736df4fe74 github.com/prometheus/client_golang v1.23.0 github.com/prometheus/client_model v0.6.2 @@ -70,9 +70,9 @@ require ( github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 github.com/thanhpk/randstr v1.0.6 - github.com/tikv/client-go/v2 v2.0.8-0.20260803074519-341d4692ec57 - github.com/tikv/pd v1.1.0-beta.0.20260604125942-9f1c47b1e851 - github.com/tikv/pd/client v0.0.0-20260708075407-4e05b9d2c2d3 + github.com/tikv/client-go/v2 v2.0.8-0.20260805060510-afe092493298 + github.com/tikv/pd v1.1.0-beta.0.20260805042804-31378cbcd0c5 + github.com/tikv/pd/client v0.0.0-20260805042804-31378cbcd0c5 github.com/tinylib/msgp v1.5.0 github.com/uber-go/atomic v1.4.0 github.com/xdg/scram v1.0.5 @@ -88,15 +88,15 @@ require ( go.uber.org/mock v0.5.2 go.uber.org/multierr v1.11.0 go.uber.org/zap v1.27.1 - golang.org/x/net v0.55.0 + golang.org/x/net v0.56.0 golang.org/x/oauth2 v0.36.0 golang.org/x/sync v0.22.0 golang.org/x/sys v0.47.0 - golang.org/x/term v0.43.0 - golang.org/x/text v0.37.0 + golang.org/x/term v0.44.0 + golang.org/x/text v0.39.0 golang.org/x/time v0.14.0 google.golang.org/api v0.230.0 - google.golang.org/grpc v1.82.0 + google.golang.org/grpc v1.82.1 google.golang.org/protobuf v1.36.11 ) @@ -142,6 +142,7 @@ require ( github.com/apache/arrow-go/v18 v18.6.1-0.20260713210906-efc145c067b6 // indirect github.com/apache/thrift v0.24.0 // indirect github.com/ardielle/ardielle-go v1.5.2 // indirect + github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.14 // indirect github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.19.0 // indirect @@ -272,8 +273,6 @@ require ( github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.20 // indirect - github.com/mitchellh/copystructure v1.0.0 // indirect - github.com/mitchellh/reflectwalk v1.0.1 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/mtibben/percent v0.2.1 // indirect @@ -302,8 +301,8 @@ require ( github.com/prometheus/procfs v0.19.2 // indirect github.com/qri-io/jsonpointer v0.1.1 // indirect github.com/qri-io/jsonschema v0.2.1 // indirect - github.com/quic-go/qpack v0.5.1 // indirect - github.com/quic-go/quic-go v0.55.0 // indirect + github.com/quic-go/qpack v0.6.0 // indirect + github.com/quic-go/quic-go v0.59.1 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/robfig/cron/v3 v3.0.1 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect @@ -364,10 +363,10 @@ require ( go.opentelemetry.io/otel/trace v1.43.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect golang.org/x/arch v0.22.0 // indirect - golang.org/x/crypto v0.52.0 // indirect + golang.org/x/crypto v0.53.0 // indirect golang.org/x/exp v0.0.0-20260112195511-716be5621a96 // indirect - golang.org/x/mod v0.36.0 // indirect - golang.org/x/tools v0.45.0 // indirect + golang.org/x/mod v0.37.0 // indirect + golang.org/x/tools v0.47.0 // indirect google.golang.org/genproto v0.0.0-20250324211829-b45e905df463 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect @@ -394,7 +393,6 @@ replace ( // copy from TiDB github.com/go-ldap/ldap/v3 v3.4.4 => github.com/yangkeao/ldap/v3 v3.4.5-0.20230421065457-369a3bab1117 - github.com/pingcap/tidb => github.com/pingyu/tidb v1.1.0-beta.0.20260805023039-debbb81f8e59 - github.com/pingcap/tidb/pkg/parser => github.com/pingyu/tidb/pkg/parser v0.0.0-20260805023039-debbb81f8e59 - github.com/tikv/client-go/v2 => github.com/pingyu/client-go/v2 v2.0.1-0.20260805022548-e8984187ef67 + github.com/tikv/pd => github.com/pingyu/pd v1.1.0-beta.0.20260805042804-31378cbcd0c5 + github.com/tikv/pd/client => github.com/pingyu/pd/client v0.0.0-20260805042804-31378cbcd0c5 ) diff --git a/go.sum b/go.sum index ddae2d7e08..3631afc036 100644 --- a/go.sum +++ b/go.sum @@ -138,6 +138,8 @@ github.com/ardielle/ardielle-go v1.5.2 h1:TilHTpHIQJ27R1Tl/iITBzMwiUGSlVfiVhwDNG github.com/ardielle/ardielle-go v1.5.2/go.mod h1:I4hy1n795cUhaVt/ojz83SNVCYIGsAFAONtv2Dr7HUI= github.com/ardielle/ardielle-tools v1.5.4/go.mod h1:oZN+JRMnqGiIhrzkRN9l26Cej9dEx4jeNG6A+AdkShk= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= +github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/aws/aws-sdk-go v1.32.6/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.44.204/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go v1.55.7 h1:UJrkFq7es5CShfBwlWAC8DA077vp8PyVbQd3lqLiztE= @@ -661,13 +663,8 @@ github.com/mattn/go-runewidth v0.0.20/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhg github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/maxatome/go-testdeep v1.11.0 h1:Tgh5efyCYyJFGUYiT0qxBSIDeXw0F5zSoatlou685kk= github.com/maxatome/go-testdeep v1.11.0/go.mod h1:011SgQ6efzZYAen6fDn4BqQ+lUR72ysdyKe7Dyogw70= -github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= -github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= -github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/moby/sys/mount v0.3.3 h1:fX1SVkXFJ47XWDoeFW4Sq7PdQJnV2QIDZAqjNqgEjUs= github.com/moby/sys/mount v0.3.3/go.mod h1:PBaEorSNTLG5t/+4EgukEQVlAvVEc6ZjTySwKdqp5K0= github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= @@ -749,8 +746,8 @@ github.com/pingcap/fn v1.0.0/go.mod h1:u9WZ1ZiOD1RpNhcI42RucFh/lBuzTu6rw88a+oF2Z github.com/pingcap/goleveldb v0.0.0-20191226122134-f82aafb29989 h1:surzm05a8C9dN8dIUmo4Be2+pMRb6f55i+UIYrluu2E= github.com/pingcap/goleveldb v0.0.0-20191226122134-f82aafb29989/go.mod h1:O17XtbryoCJhkKGbT62+L2OlrniwqiGLSqrmdHCMzZw= github.com/pingcap/kvproto v0.0.0-20191211054548-3c6b38ea5107/go.mod h1:WWLmULLO7l8IOcQG+t+ItJ3fEcrL5FxF0Wu+HrMy26w= -github.com/pingcap/kvproto v0.0.0-20260721064811-683dad8fa368 h1:qW0gHsqY3X3qmyiEfESqpYSF3Vu7agUiAyBnPWQXtm8= -github.com/pingcap/kvproto v0.0.0-20260721064811-683dad8fa368/go.mod h1:z6+aAHB7dBkA+LyinEX+48/ImRJ3jag0Hg0c7wkhEvE= +github.com/pingcap/kvproto v0.0.0-20260724054804-059694ae4472 h1:JBrbgynAz4RkeXUvqXAOhySZK5FYFCeHdKWUrj+Z2Vw= +github.com/pingcap/kvproto v0.0.0-20260724054804-059694ae4472/go.mod h1:z6+aAHB7dBkA+LyinEX+48/ImRJ3jag0Hg0c7wkhEvE= github.com/pingcap/log v0.0.0-20191012051959-b742a5d432e9/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8= github.com/pingcap/log v0.0.0-20210625125904-98ed8e2eb1c7/go.mod h1:8AanEdAHATuRurdGxZXBz0At+9avep+ub7U1AGYLIMM= github.com/pingcap/log v1.1.0/go.mod h1:DWQW5jICDR7UJh4HtxXSM20Churx4CQL0fwL/SoOSA4= @@ -762,18 +759,20 @@ github.com/pingcap/sarama v1.41.2-pingcap-20260622.1 h1:TrtpL+fs51pUc21CZ8mzIotO github.com/pingcap/sarama v1.41.2-pingcap-20260622.1/go.mod h1:PIL6ZKKKhm19IbQpmpJcFnybAi1yXtgLAitDAeBdNCw= github.com/pingcap/sysutil v1.0.1-0.20240311050922-ae81ee01f3a5 h1:T4pXRhBflzDeAhmOQHNPRRogMYxP13V7BkYw3ZsoSfE= github.com/pingcap/sysutil v1.0.1-0.20240311050922-ae81ee01f3a5/go.mod h1:rlimy0GcTvjiJqvD5mXTRr8O2eNZPBrcUgiWVYp9530= -github.com/pingcap/tidb-dashboard v0.0.0-20260316045729-aa6178a60657 h1:o/epSPBAWPf4LC4qTAw/AkDRid5ejP4EOcV2CSZ06gw= -github.com/pingcap/tidb-dashboard v0.0.0-20260316045729-aa6178a60657/go.mod h1:3C4RKDXCp3OtN0EsL4Qec3/LFXyJsWITsLCmvNV3bZ4= +github.com/pingcap/tidb v1.1.0-beta.0.20260724070715-6a65a1e5f7f5 h1:85yAL0PC10nuYAhNwiSOogrC86MU5S/BDWGeJa+ir04= +github.com/pingcap/tidb v1.1.0-beta.0.20260724070715-6a65a1e5f7f5/go.mod h1:fGfN8rDm+EoMhH4bWCbjeXkOmcxIpVNJ2Wj9J4tQgkQ= +github.com/pingcap/tidb-dashboard v0.0.0-20260424073400-8efaf2f70a41 h1:fIsZkvHSM2NwfoPwuR5FM6h9OdFpbK/VKwWwe35gK8U= +github.com/pingcap/tidb-dashboard v0.0.0-20260424073400-8efaf2f70a41/go.mod h1:3C4RKDXCp3OtN0EsL4Qec3/LFXyJsWITsLCmvNV3bZ4= +github.com/pingcap/tidb/pkg/parser v0.0.0-20260724070715-6a65a1e5f7f5 h1:jVEgZbF37UYrahIM0Dd322f3wK4XnEryYzerp+qdvKg= +github.com/pingcap/tidb/pkg/parser v0.0.0-20260724070715-6a65a1e5f7f5/go.mod h1:zDLDsfNBU5+L6T4J9/OgWAHc/WZvMUjbpgHqQ/t3yKo= github.com/pingcap/tiflow v0.0.0-20260723070929-e8736df4fe74 h1:nGUVwdQMqd590TVOMITxr268HVTzBtFGswDEvJSwQfE= github.com/pingcap/tiflow v0.0.0-20260723070929-e8736df4fe74/go.mod h1:t5vaLtgdBIX7TR8yY3AuIq+hUsbJio8o5j1WBsoX7SU= github.com/pingcap/tipb v0.0.0-20260623093813-5f9928e91afe h1:9I5GHZesmR+hv68t00BO7tayKMFfywi+hlpn119GscM= github.com/pingcap/tipb v0.0.0-20260623093813-5f9928e91afe/go.mod h1:RM8iRcMalzOthG2XJxnNBniM4xFGb/lDwHUwqkaVzt4= -github.com/pingyu/client-go/v2 v2.0.1-0.20260805022548-e8984187ef67 h1:vtHSY/KOd16FFxT0L8SJOkj0L2M5lpEUOxw4YI+Q9vc= -github.com/pingyu/client-go/v2 v2.0.1-0.20260805022548-e8984187ef67/go.mod h1:kNePJmoqcbd+eTTzZmzZy40rX8LjI6qFYCzdV66cu18= -github.com/pingyu/tidb v1.1.0-beta.0.20260805023039-debbb81f8e59 h1:eq/F2t7rhRo7BGmndAwh6GnlA4vHpUfRyEQQKjjewM4= -github.com/pingyu/tidb v1.1.0-beta.0.20260805023039-debbb81f8e59/go.mod h1:cdwQvyoWiEoDsyGkdHfDoNLyPSIEo0pI8GXS2UBM97A= -github.com/pingyu/tidb/pkg/parser v0.0.0-20260805023039-debbb81f8e59 h1:B7LUhI0pjywCd9JeU3Q4YwdrHxq9tE7D/zttOgbcgSo= -github.com/pingyu/tidb/pkg/parser v0.0.0-20260805023039-debbb81f8e59/go.mod h1:zDLDsfNBU5+L6T4J9/OgWAHc/WZvMUjbpgHqQ/t3yKo= +github.com/pingyu/pd v1.1.0-beta.0.20260805042804-31378cbcd0c5 h1:xdLUmjZ+vsGuMt/F3MJqc0i3XoZk+08+uaBMd/7a68M= +github.com/pingyu/pd v1.1.0-beta.0.20260805042804-31378cbcd0c5/go.mod h1:DewEqh739XH/nk2z/E57XtNQ3sr+GVx32K8S0Ep3iso= +github.com/pingyu/pd/client v0.0.0-20260805042804-31378cbcd0c5 h1:VjSoQtnlRls8iYVM3E5FsbYERn44hHg3LFAzMTgubFg= +github.com/pingyu/pd/client v0.0.0-20260805042804-31378cbcd0c5/go.mod h1:sfdha4LXeUkSs2Z7N5jLzDEtm0GE7x+Glm2pW3UgEpA= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= @@ -810,10 +809,10 @@ github.com/qri-io/jsonpointer v0.1.1 h1:prVZBZLL6TW5vsSB9fFHFAMBLI4b0ri5vribQlTJ github.com/qri-io/jsonpointer v0.1.1/go.mod h1:DnJPaYgiKu56EuDp8TU5wFLdZIcAnb/uH9v37ZaMV64= github.com/qri-io/jsonschema v0.2.1 h1:NNFoKms+kut6ABPf6xiKNM5214jzxAhDBrPHCJ97Wg0= github.com/qri-io/jsonschema v0.2.1/go.mod h1:g7DPkiOsK1xv6T/Ao5scXRkd+yTFygcANPBaaqW+VrI= -github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI= -github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg= -github.com/quic-go/quic-go v0.55.0 h1:zccPQIqYCXDt5NmcEabyYvOnomjs8Tlwl7tISjJh9Mk= -github.com/quic-go/quic-go v0.55.0/go.mod h1:DR51ilwU1uE164KuWXhinFcKWGlEjzys2l8zUl5Ss1U= +github.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8= +github.com/quic-go/qpack v0.6.0/go.mod h1:lUpLKChi8njB4ty2bFLX2x4gzDqXwUpaO1DP9qMDZII= +github.com/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic= +github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= github.com/r3labs/diff v1.1.0 h1:V53xhrbTHrWFWq3gI4b94AjgEJOerO1+1l0xyHOBi8M= github.com/r3labs/diff v1.1.0/go.mod h1:7WjXasNzi0vJetRcB/RqNl5dlIsmXcTTLmF5IoH6Xig= github.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9 h1:bsUq1dX0N8AOIL7EB/X911+m4EHsnWEHeJ0c+3TTBrg= @@ -943,10 +942,8 @@ github.com/tidwall/rtred v0.1.2 h1:exmoQtOLvDoO8ud++6LwVsAMTu0KPzLTUrMln8u1yu8= github.com/tidwall/rtred v0.1.2/go.mod h1:hd69WNXQ5RP9vHd7dqekAz+RIdtfBogmglkZSRxCHFQ= github.com/tidwall/tinyqueue v0.1.1 h1:SpNEvEggbpyN5DIReaJ2/1ndroY8iyEGxPYxoSaymYE= github.com/tidwall/tinyqueue v0.1.1/go.mod h1:O/QNHwrnjqr6IHItYrzoHAKYhBkLI67Q096fQP5zMYw= -github.com/tikv/pd v1.1.0-beta.0.20260604125942-9f1c47b1e851 h1:2beLPo1vMSw9gpdcC5Fam/P5HaXRPmX4TEN2fv+7nKE= -github.com/tikv/pd v1.1.0-beta.0.20260604125942-9f1c47b1e851/go.mod h1:Pb3H0cSkdiEdj761wzNziNHFOLVYuQmNgxQKp35UoxQ= -github.com/tikv/pd/client v0.0.0-20260708075407-4e05b9d2c2d3 h1:OoBvgoeWmdNEXtS+eOlhysz/OvhA4GS0OdPVhTXteGA= -github.com/tikv/pd/client v0.0.0-20260708075407-4e05b9d2c2d3/go.mod h1:3/Bu91CJONgkDA+Y0v/cnbROSJnu5tQ09vv7JGybUBA= +github.com/tikv/client-go/v2 v2.0.8-0.20260805060510-afe092493298 h1:pbnYSYlCkJxVBqd7h3AJooTrHXrPznDYJ5AaKN1Gck8= +github.com/tikv/client-go/v2 v2.0.8-0.20260805060510-afe092493298/go.mod h1:R1bHiDoPmAVH90YHvry29Y1BZgXIDRejMo4PQwVE7E4= github.com/tinylib/msgp v1.5.0 h1:GWnqAE54wmnlFazjq2+vgr736Akg58iiHImh+kPY2pc= github.com/tinylib/msgp v1.5.0/go.mod h1:cvjFkb4RiC8qSBOPMGPSzSAx47nAsfhLVTCZZNuHv5o= github.com/tjfoc/gmsm v1.3.2/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w= @@ -1120,8 +1117,8 @@ golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDf golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= -golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= -golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= +golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto= +golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20260112195511-716be5621a96 h1:Z/6YuSHTLOHfNFdb8zVZomZr7cqNgTJvA8+Qz75D8gU= @@ -1141,8 +1138,8 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= -golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= +golang.org/x/mod v0.37.0 h1:vF1DjpVEshcIqoEaauuHebaLk1O1forxjxBaVn884JQ= +golang.org/x/mod v0.37.0/go.mod h1:m8S8VeM9r4dzDwjrKO0a1sZP3YjeMamRRlD+fmR2Q/0= golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1180,8 +1177,8 @@ golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= -golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= -golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o= +golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= @@ -1257,8 +1254,8 @@ golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= -golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4= -golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk= +golang.org/x/term v0.44.0 h1:0rLvDRCtNj0gZkyIXhCyOb2OAzEhLVqc4B+hrsBhrmc= +golang.org/x/term v0.44.0/go.mod h1:7ze4MdzUzLXpSAoFP1H0bOI9aXDqveSvatT5vKcFh2Y= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -1274,8 +1271,8 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= -golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= -golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= +golang.org/x/text v0.39.0 h1:UbZz4pLOvn600D6Oh6GGEI6VAmndrEBLv8/6BEXzyus= +golang.org/x/text v0.39.0/go.mod h1:3UwRclnC2g0TU9x8PZiyfOajCd1zaUNHF9cvqcQZ+ZM= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= @@ -1306,8 +1303,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8= -golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0= +golang.org/x/tools v0.47.0 h1:7Kn5x/d1svx/PzryTsqeoZN4TZwqeH5pGWjefhLi/1Q= +golang.org/x/tools v0.47.0/go.mod h1:dFHnyTvFWY212G+h7ZY4Vsp/K3U4/7W9TyVaAul8uCA= golang.org/x/tools/godoc v0.1.0-deprecated h1:o+aZ1BOj6Hsx/GBdJO/s815sqftjSnrZZwyYTHODvtk= golang.org/x/tools/godoc v0.1.0-deprecated/go.mod h1:qM63CriJ961IHWmnWa9CjZnBndniPt4a3CK0PVB9bIg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1348,10 +1345,10 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.82.0 h1:vguDnZUPjE26w09A63VoxZPnvPjB5Riyc0mkXPFmAIU= -google.golang.org/grpc v1.82.0/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= -google.golang.org/grpc/examples v0.0.0-20250407062114-b368379ef8f6 h1:ExN12ndbJ608cboPYflpTny6mXSzPrDLh0iTaVrRrds= -google.golang.org/grpc/examples v0.0.0-20250407062114-b368379ef8f6/go.mod h1:6ytKWczdvnpnO+m+JiG9NjEDzR1FJfsnmJdG7B8QVZ8= +google.golang.org/grpc v1.82.1 h1:NnAxzGRA0677vCa4BUkOAnO5+FfQqVl9iUXeD0IqcGE= +google.golang.org/grpc v1.82.1/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= +google.golang.org/grpc/examples v0.0.0-20231221225426-4f03f3ff32c9 h1:ATnmU8nL2NfIyTSiBvJVDIDIr3qBmeW+c7z7XU21eWs= +google.golang.org/grpc/examples v0.0.0-20231221225426-4f03f3ff32c9/go.mod h1:j5uROIAAgi3YmtiETMt1LW0d/lHqQ7wwrIY4uGRXLQ4= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/maintainer/maintainer_manager_test.go b/maintainer/maintainer_manager_test.go index fb957c37b0..6c819c14c3 100644 --- a/maintainer/maintainer_manager_test.go +++ b/maintainer/maintainer_manager_test.go @@ -671,13 +671,13 @@ func TestStopNotExistsMaintainer(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() meta := &keyspacepb.KeyspaceMeta{ - Id: 0, - Name: "default", + Keyspace: &keyspacepb.KeyspaceMeta_Id{Id: 0}, + Name: "default", } if kerneltype.IsNextGen() { meta = &keyspacepb.KeyspaceMeta{ - Id: 1, - Name: "ks1", + Keyspace: &keyspacepb.KeyspaceMeta_Id{Id: 1}, + Name: "ks1", } } keyspaceManager := keyspace.NewMockManager(ctrl) diff --git a/pkg/common/span_op.go b/pkg/common/span_op.go index 16033dc2e8..56b31ab343 100644 --- a/pkg/common/span_op.go +++ b/pkg/common/span_op.go @@ -122,7 +122,7 @@ func GetKeyspaceTableRange(keyspaceID uint32, tableID int64) (startKey, endKey [ // But it actually use the keyspaceID only // We construct a KeyspaceMeta to make the codec happy meta := &keyspacepb.KeyspaceMeta{ - Id: keyspaceID, + Keyspace: &keyspacepb.KeyspaceMeta_Id{Id: keyspaceID}, } codec, err := tikv.NewCodecV2(tikv.ModeTxn, meta) diff --git a/pkg/keyspace/keyspace_manager.go b/pkg/keyspace/keyspace_manager.go index 635f3679cf..aa4e293494 100644 --- a/pkg/keyspace/keyspace_manager.go +++ b/pkg/keyspace/keyspace_manager.go @@ -54,8 +54,8 @@ type manager struct { } var defaultKeyspaceMeta = &keyspacepb.KeyspaceMeta{ - Name: common.DefaultKeyspaceName, - Id: common.DefaultKeyspaceID, + Name: common.DefaultKeyspaceName, + Keyspace: &keyspacepb.KeyspaceMeta_Id{Id: common.DefaultKeyspaceID}, } func (k *manager) LoadKeyspace(ctx context.Context, keyspace string) (*keyspacepb.KeyspaceMeta, error) { From 0c5bec33f419774202ee10e87e904f625ba295f4 Mon Sep 17 00:00:00 2001 From: Ping Yu Date: Wed, 12 Aug 2026 17:53:36 +0800 Subject: [PATCH 11/12] bump & fix Signed-off-by: Ping Yu --- cmd/cdc/factory/factory_impl.go | 2 +- go.mod | 60 ++++++++-------- go.sum | 119 +++++++++++++++----------------- pkg/upstream/upstream.go | 3 +- server/server_prepare.go | 2 +- 5 files changed, 88 insertions(+), 98 deletions(-) diff --git a/cmd/cdc/factory/factory_impl.go b/cmd/cdc/factory/factory_impl.go index c79b1ffe39..97bafab577 100644 --- a/cmd/cdc/factory/factory_impl.go +++ b/cmd/cdc/factory/factory_impl.go @@ -138,7 +138,7 @@ func (f *factoryImpl) PdClient() (pd.Client, error) { pdClient, err := pd.NewClientWithContext( f.ctx, "cdc-factory", pdEndpoints, credential.PDSecurityOption(), pdopt.WithMaxErrorRetry(maxGetPDClientRetryTimes), - pdopt.WithEnableRouterClient(false), + pdopt.WithEnableRouterClient(false), // Compact with old PD which doesn't support the `QueryRegion` API. // TODO(hi-rustin): add gRPC metrics to Options. // See also: https://github.com/pingcap/tiflow/pull/2341#discussion_r673032407. pdopt.WithGRPCDialOptions( diff --git a/go.mod b/go.mod index de1799e46b..2ad074a1d4 100644 --- a/go.mod +++ b/go.mod @@ -31,7 +31,7 @@ require ( github.com/go-mysql-org/go-mysql v1.13.0 github.com/go-oauth2/oauth2/v4 v4.5.4 github.com/go-sql-driver/mysql v1.9.3 - github.com/goccy/go-json v0.10.5 + github.com/goccy/go-json v0.10.6 github.com/gogo/protobuf v1.3.2 github.com/golang-jwt/jwt/v5 v5.3.0 github.com/golang/mock v1.6.0 @@ -45,19 +45,19 @@ require ( github.com/integralist/go-findroot v0.0.0-20160518114804-ac90681525dc github.com/jarcoal/httpmock v1.2.0 github.com/json-iterator/go v1.1.12 - github.com/klauspost/compress v1.18.5 + github.com/klauspost/compress v1.19.0 github.com/linkedin/goavro/v2 v2.14.0 github.com/mailru/easyjson v0.9.1 github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 - github.com/pierrec/lz4/v4 v4.1.26 + github.com/pierrec/lz4/v4 v4.1.27 github.com/pingcap/errors v0.11.5-0.20260508054701-306e305bcf41 github.com/pingcap/failpoint v0.0.0-20240528011301-b51a646c7c86 - github.com/pingcap/kvproto v0.0.0-20260716092138-22607720b19a + github.com/pingcap/kvproto v0.0.0-20260724054804-059694ae4472 github.com/pingcap/log v1.1.1-0.20250917021125-19901e015dc9 github.com/pingcap/sysutil v1.0.1-0.20240311050922-ae81ee01f3a5 - github.com/pingcap/tidb v1.1.0-beta.0.20260625145450-3e4ee9fc99e7 + github.com/pingcap/tidb v1.1.0-beta.0.20260812023830-6338c2776726 github.com/pingcap/tidb-dashboard v0.0.0-20260316045729-aa6178a60657 - github.com/pingcap/tidb/pkg/parser v0.0.0-20260616034257-3adc8ec71ef3 + github.com/pingcap/tidb/pkg/parser v0.0.0-20260812023830-6338c2776726 github.com/pingcap/tiflow v0.0.0-20260723070929-e8736df4fe74 github.com/prometheus/client_golang v1.23.0 github.com/prometheus/client_model v0.6.2 @@ -70,9 +70,9 @@ require ( github.com/spf13/pflag v1.0.10 github.com/stretchr/testify v1.11.1 github.com/thanhpk/randstr v1.0.6 - github.com/tikv/client-go/v2 v2.0.8-0.20260618054307-6125c3b05c6c + github.com/tikv/client-go/v2 v2.0.8-0.20260807103401-b75f6efa8ddd github.com/tikv/pd v1.1.0-beta.0.20260604125942-9f1c47b1e851 - github.com/tikv/pd/client v0.0.0-20260604125942-9f1c47b1e851 + github.com/tikv/pd/client v0.0.0-20260805103528-afa43111d149 github.com/tinylib/msgp v1.5.0 github.com/uber-go/atomic v1.4.0 github.com/xdg/scram v1.0.5 @@ -90,8 +90,8 @@ require ( go.uber.org/zap v1.27.1 golang.org/x/net v0.56.0 golang.org/x/oauth2 v0.36.0 - golang.org/x/sync v0.21.0 - golang.org/x/sys v0.46.0 + golang.org/x/sync v0.22.0 + golang.org/x/sys v0.47.0 golang.org/x/term v0.44.0 golang.org/x/text v0.39.0 golang.org/x/time v0.14.0 @@ -138,11 +138,10 @@ require ( github.com/aliyun/alibaba-cloud-sdk-go v1.61.1581 // indirect github.com/aliyun/alibabacloud-oss-go-sdk-v2 v1.2.3 // indirect github.com/aliyun/credentials-go v1.4.7 // indirect - github.com/andybalholm/brotli v1.2.0 // indirect - github.com/apache/arrow-go/v18 v18.5.0 // indirect - github.com/apache/thrift v0.23.0 // indirect + github.com/andybalholm/brotli v1.2.2 // indirect + github.com/apache/arrow-go/v18 v18.6.1-0.20260713210906-efc145c067b6 // indirect + github.com/apache/thrift v0.24.0 // indirect github.com/ardielle/ardielle-go v1.5.2 // indirect - github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.14 // indirect github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.19.0 // indirect @@ -173,6 +172,7 @@ require ( github.com/cheggaaa/pb/v3 v3.0.8 // indirect github.com/cilium/ebpf v0.4.0 // indirect github.com/clbanning/mxj/v2 v2.7.0 // indirect + github.com/clipperhouse/uax29/v2 v2.7.0 // indirect github.com/cloudfoundry/gosigar v1.3.6 // indirect github.com/cloudwego/base64x v0.1.6 // indirect github.com/cockroachdb/errors v1.11.3 // indirect @@ -219,10 +219,10 @@ require ( github.com/godbus/dbus/v5 v5.0.4 // indirect github.com/golang-jwt/jwt/v4 v4.5.2 // indirect github.com/golang/glog v1.2.5 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v1.0.0 // indirect - github.com/google/flatbuffers v25.9.23+incompatible // indirect + github.com/google/flatbuffers v25.12.19+incompatible // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/pprof v0.0.0-20250903194437-c28834ac2320 // indirect github.com/google/s2a-go v0.1.9 // indirect @@ -231,9 +231,9 @@ require ( github.com/gorilla/mux v1.8.1 // indirect github.com/gorilla/websocket v1.5.1 // indirect github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect - github.com/hamba/avro/v2 v2.30.0 // indirect + github.com/hamba/avro/v2 v2.31.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect @@ -255,9 +255,8 @@ require ( github.com/joho/sqltocsv v0.0.0-20210428211105-a6d6801d59df // indirect github.com/jonboulle/clockwork v0.4.0 // indirect github.com/joomcode/errorx v1.0.1 // indirect - github.com/klauspost/asmfmt v1.3.2 // indirect github.com/klauspost/cpuid v1.3.1 // indirect - github.com/klauspost/cpuid/v2 v2.3.0 // indirect + github.com/klauspost/cpuid/v2 v2.4.0 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/ks3sdklib/aws-sdk-go v1.2.9 // indirect @@ -272,9 +271,9 @@ require ( github.com/lufia/plan9stats v0.0.0-20230326075908-cb1d2100619a // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.16 // indirect - github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 // indirect - github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 // indirect + github.com/mattn/go-runewidth v0.0.20 // indirect + github.com/mitchellh/copystructure v1.0.0 // indirect + github.com/mitchellh/reflectwalk v1.0.1 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/mtibben/percent v0.2.1 // indirect @@ -294,7 +293,7 @@ require ( github.com/pingcap/fn v1.0.0 // indirect github.com/pingcap/goleveldb v0.0.0-20191226122134-f82aafb29989 // indirect github.com/pingcap/metering_sdk v0.0.0-20260324055927-14fead745f1d // indirect - github.com/pingcap/tipb v0.0.0-20260617071407-7c071244534b // indirect + github.com/pingcap/tipb v0.0.0-20260623093813-5f9928e91afe // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect @@ -306,7 +305,6 @@ require ( github.com/quic-go/qpack v0.5.1 // indirect github.com/quic-go/quic-go v0.55.0 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect - github.com/rivo/uniseg v0.4.7 // indirect github.com/robfig/cron/v3 v3.0.1 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/rs/cors v1.7.0 // indirect @@ -350,7 +348,7 @@ require ( github.com/xdg/stringprep v1.0.3 // indirect github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - github.com/zeebo/xxh3 v1.0.2 // indirect + github.com/zeebo/xxh3 v1.1.0 // indirect github.com/zyedidia/generic v1.2.1 // indirect go.etcd.io/bbolt v1.3.10 // indirect go.etcd.io/etcd/client/v2 v2.305.15 // indirect @@ -364,15 +362,13 @@ require ( go.opentelemetry.io/otel/metric v1.43.0 // indirect go.opentelemetry.io/otel/sdk v1.43.0 // indirect go.opentelemetry.io/otel/trace v1.43.0 // indirect - go.opentelemetry.io/proto/otlp v1.7.1 // indirect + go.opentelemetry.io/proto/otlp v1.9.0 // indirect golang.org/x/arch v0.22.0 // indirect golang.org/x/crypto v0.53.0 // indirect - golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect + golang.org/x/exp v0.0.0-20260112195511-716be5621a96 // indirect golang.org/x/mod v0.37.0 // indirect - golang.org/x/telemetry v0.0.0-20260625142307-59b4966ccb57 // indirect golang.org/x/tools v0.47.0 // indirect - golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect - google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb // indirect + google.golang.org/genproto v0.0.0-20250324211829-b45e905df463 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect gopkg.in/inf.v0 v0.9.1 // indirect @@ -396,8 +392,6 @@ require ( replace ( github.com/IBM/sarama v1.41.2 => github.com/pingcap/sarama v1.41.2-pingcap-20260622.1 - // Downgrade grpc to v1.63.2, as well as other related modules. - github.com/apache/arrow-go/v18 => github.com/joechenrh/arrow-go/v18 v18.0.0-20250911101656-62c34c9a3b82 // copy from TiDB github.com/go-ldap/ldap/v3 v3.4.4 => github.com/yangkeao/ldap/v3 v3.4.5-0.20230421065457-369a3bab1117 ) diff --git a/go.sum b/go.sum index 06a70a57fc..1fc9a65afb 100644 --- a/go.sum +++ b/go.sum @@ -125,19 +125,19 @@ github.com/aliyun/credentials-go v1.3.6/go.mod h1:1LxUuX7L5YrZUWzBrRyk0SwSdH4OmP github.com/aliyun/credentials-go v1.4.5/go.mod h1:Jm6d+xIgwJVLVWT561vy67ZRP4lPTQxMbEYRuT2Ti1U= github.com/aliyun/credentials-go v1.4.7 h1:T17dLqEtPUFvjDRRb5giVvLh6dFT8IcNFJJb7MeyCxw= github.com/aliyun/credentials-go v1.4.7/go.mod h1:Jm6d+xIgwJVLVWT561vy67ZRP4lPTQxMbEYRuT2Ti1U= -github.com/andybalholm/brotli v1.2.0 h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwToPjQ= -github.com/andybalholm/brotli v1.2.0/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY= +github.com/andybalholm/brotli v1.2.2 h1:HzTuoo2ErYQqf5qvcJInB8uvqSVxRttzkFexPWtnceM= +github.com/andybalholm/brotli v1.2.2/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/apache/arrow-go/v18 v18.6.1-0.20260713210906-efc145c067b6 h1:BxUaI96qgW9FzSrzbCmlnFvKOX/u7isAL6VrCWaVjEY= +github.com/apache/arrow-go/v18 v18.6.1-0.20260713210906-efc145c067b6/go.mod h1:PM6IigLJkdMwIpeHXnymo+xZ52f42a9EYiLtRel4p/A= github.com/apache/pulsar-client-go v0.13.0 h1:XB8jbcVgBZlRkswtTFj6Xy3Hv0mtpvT8xn/ovT1c0I0= github.com/apache/pulsar-client-go v0.13.0/go.mod h1:btNzPWaKtG9geL6naJNYwXnqJJ/codYM41awyZxZLQ4= -github.com/apache/thrift v0.23.0 h1:wKR6YnefQSEnxpEfmgTPuJibNG4bF0p2TK34tHLWi3s= -github.com/apache/thrift v0.23.0/go.mod h1:zPt6WxgvTOM6hF92y8C+MkEM5LMxZuk4JcQOiU4Esvs= +github.com/apache/thrift v0.24.0 h1:zy31L1a49QTNB2bG1BBfMXol3yJrTH975G3pPubQVLQ= +github.com/apache/thrift v0.24.0/go.mod h1:zPt6WxgvTOM6hF92y8C+MkEM5LMxZuk4JcQOiU4Esvs= github.com/ardielle/ardielle-go v1.5.2 h1:TilHTpHIQJ27R1Tl/iITBzMwiUGSlVfiVhwDNGM3Zj4= github.com/ardielle/ardielle-go v1.5.2/go.mod h1:I4hy1n795cUhaVt/ojz83SNVCYIGsAFAONtv2Dr7HUI= github.com/ardielle/ardielle-tools v1.5.4/go.mod h1:oZN+JRMnqGiIhrzkRN9l26Cej9dEx4jeNG6A+AdkShk= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= -github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/aws/aws-sdk-go v1.32.6/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.44.204/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go v1.55.7 h1:UJrkFq7es5CShfBwlWAC8DA077vp8PyVbQd3lqLiztE= @@ -228,6 +228,8 @@ github.com/clbanning/mxj/v2 v2.5.5/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME= github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/clipperhouse/uax29/v2 v2.7.0 h1:+gs4oBZ2gPfVrKPthwbMzWZDaAFPGYK72F0NJv2v7Vk= +github.com/clipperhouse/uax29/v2 v2.7.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= github.com/cloudfoundry/gosigar v1.3.6 h1:gIc08FbB3QPb+nAQhINIK/qhf5REKkY0FTGgRGXkcVc= github.com/cloudfoundry/gosigar v1.3.6/go.mod h1:lNWstu5g5gw59O09Y+wsMNFzBSnU8a0u+Sfx4dq360E= github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M= @@ -397,8 +399,8 @@ github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9L github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= -github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= @@ -420,8 +422,8 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfU github.com/golang/glog v1.2.5 h1:DrW6hGnjIhtvhOIiAKT6Psh/Kd/ldepEa81DKeiRJ5I= github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= @@ -446,8 +448,8 @@ github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= -github.com/google/flatbuffers v25.9.23+incompatible h1:rGZKv+wOb6QPzIdkM2KxhBZCDrA0DeN6DNmRDrqIsQU= -github.com/google/flatbuffers v25.9.23+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/flatbuffers v25.12.19+incompatible h1:haMV2JRRJCe1998HeW/p0X9UaMTK6SDo0ffLn2+DbLs= +github.com/google/flatbuffers v25.12.19+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -505,12 +507,12 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92Bcuy github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= -github.com/hamba/avro/v2 v2.30.0 h1:OaIdh0+dZIJ331FO/+YYBwZZRdGVyyHuRSyHsjZLJoA= -github.com/hamba/avro/v2 v2.30.0/go.mod h1:X6gDhYv6DQVAT56VqOKuW+PLnQrEQqGB9l1nhlMdAdQ= +github.com/hamba/avro/v2 v2.31.0 h1:wv3nmua7lCEIwWsb6vqsTS3pXktTxcKg5eoyNu0VhrU= +github.com/hamba/avro/v2 v2.31.0/go.mod h1:t6lJYAGE5Mswfn17zjtyQsssRQgnqO6TXLBCHHWRqrw= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -574,8 +576,6 @@ github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9Y github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/joechenrh/arrow-go/v18 v18.0.0-20250911101656-62c34c9a3b82 h1:FgHYKbQYF2aD5vlSMCHiS9Xn5PPmFLSaCc+5OYInMRc= -github.com/joechenrh/arrow-go/v18 v18.0.0-20250911101656-62c34c9a3b82/go.mod h1:xBWjSZfpqLkg1mHuVUSF8lMTUfE7SdEUl/VVVd79MIw= github.com/johannesboyne/gofakes3 v0.0.0-20230506070712-04da935ef877 h1:O7syWuYGzre3s73s+NkgB8e0ZvsIVhT/zxNU7V1gHK8= github.com/johannesboyne/gofakes3 v0.0.0-20230506070712-04da935ef877/go.mod h1:AxgWC4DDX54O2WDoQO1Ceabtn6IbktjU/7bigor+66g= github.com/joho/sqltocsv v0.0.0-20210428211105-a6d6801d59df h1:Zrb0IbuLOGHL7nrO2WrcuNWgDTlzFv3zY69QMx4ggQE= @@ -598,17 +598,15 @@ github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvW github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= -github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= -github.com/klauspost/compress v1.18.5 h1:/h1gH5Ce+VWNLSWqPzOVn6XBO+vJbCNGvjoaGBFW2IE= -github.com/klauspost/compress v1.18.5/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= +github.com/klauspost/compress v1.19.0 h1:sXLILfc9jV2QYWkzFOPWStmcUVH2RHEB1JCdY2oVvCQ= +github.com/klauspost/compress v1.19.0/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid v1.3.1 h1:5JNjFYYQrZeKRJ0734q51WCEEn2huer72Dc7K+R/b6s= github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd42rAQw4= -github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= -github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= +github.com/klauspost/cpuid/v2 v2.4.0 h1:S6Hrbc7+ywsr0r+RLapfGBHfyefhCTwEh3A0tV913Dw= +github.com/klauspost/cpuid/v2 v2.4.0/go.mod h1:19jmZ9mjzoF//ddRSUsv0zfBTJWh3QJh9FNxZTMrGxU= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -658,17 +656,18 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= -github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.20 h1:WcT52H91ZUAwy8+HUkdM3THM6gXqXuLJi9O3rjcQQaQ= +github.com/mattn/go-runewidth v0.0.20/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/maxatome/go-testdeep v1.11.0 h1:Tgh5efyCYyJFGUYiT0qxBSIDeXw0F5zSoatlou685kk= github.com/maxatome/go-testdeep v1.11.0/go.mod h1:011SgQ6efzZYAen6fDn4BqQ+lUR72ysdyKe7Dyogw70= -github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 h1:AMFGa4R4MiIpspGNG7Z948v4n35fFGB3RR3G/ry4FWs= -github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= -github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8DFdX7uMikMLXX4oubIzJF4kv/wI= -github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= +github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= +github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= +github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/moby/sys/mount v0.3.3 h1:fX1SVkXFJ47XWDoeFW4Sq7PdQJnV2QIDZAqjNqgEjUs= github.com/moby/sys/mount v0.3.3/go.mod h1:PBaEorSNTLG5t/+4EgukEQVlAvVEc6ZjTySwKdqp5K0= github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= @@ -731,8 +730,8 @@ github.com/philhofer/fwd v1.2.0/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJ github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= -github.com/pierrec/lz4/v4 v4.1.26 h1:GrpZw1gZttORinvzBdXPUXATeqlJjqUG/D87TKMnhjY= -github.com/pierrec/lz4/v4 v4.1.26/go.mod h1:EoQMVJgeeEOMsCqCzqFm2O0cJvljX2nGZjcRIPL34O4= +github.com/pierrec/lz4/v4 v4.1.27 h1:+PhzhWDrjRj89TH2sw43nE3+4+W8lSxIuQadEHZyjUk= +github.com/pierrec/lz4/v4 v4.1.27/go.mod h1:EoQMVJgeeEOMsCqCzqFm2O0cJvljX2nGZjcRIPL34O4= github.com/pingcap/badger v1.5.1-0.20241015064302-38533b6cbf8d h1:eHcokyHxm7HVM+7+Qy1zZwC7NhX9wVNX8oQDcSZw1qI= github.com/pingcap/badger v1.5.1-0.20241015064302-38533b6cbf8d/go.mod h1:KiO2zumBCWx7yoVYoFRpb+DNrwEPk1pR1LF7NvOACMQ= github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8/go.mod h1:B1+S9LNcuMyLH/4HMTViQOJevkGiik3wW2AN9zb2fNQ= @@ -750,8 +749,8 @@ github.com/pingcap/fn v1.0.0/go.mod h1:u9WZ1ZiOD1RpNhcI42RucFh/lBuzTu6rw88a+oF2Z github.com/pingcap/goleveldb v0.0.0-20191226122134-f82aafb29989 h1:surzm05a8C9dN8dIUmo4Be2+pMRb6f55i+UIYrluu2E= github.com/pingcap/goleveldb v0.0.0-20191226122134-f82aafb29989/go.mod h1:O17XtbryoCJhkKGbT62+L2OlrniwqiGLSqrmdHCMzZw= github.com/pingcap/kvproto v0.0.0-20191211054548-3c6b38ea5107/go.mod h1:WWLmULLO7l8IOcQG+t+ItJ3fEcrL5FxF0Wu+HrMy26w= -github.com/pingcap/kvproto v0.0.0-20260716092138-22607720b19a h1:byZN6kkQEzeBfkrA7DMasEJciMwpKLNuK2jZiJH1N+o= -github.com/pingcap/kvproto v0.0.0-20260716092138-22607720b19a/go.mod h1:z6+aAHB7dBkA+LyinEX+48/ImRJ3jag0Hg0c7wkhEvE= +github.com/pingcap/kvproto v0.0.0-20260724054804-059694ae4472 h1:JBrbgynAz4RkeXUvqXAOhySZK5FYFCeHdKWUrj+Z2Vw= +github.com/pingcap/kvproto v0.0.0-20260724054804-059694ae4472/go.mod h1:z6+aAHB7dBkA+LyinEX+48/ImRJ3jag0Hg0c7wkhEvE= github.com/pingcap/log v0.0.0-20191012051959-b742a5d432e9/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8= github.com/pingcap/log v0.0.0-20210625125904-98ed8e2eb1c7/go.mod h1:8AanEdAHATuRurdGxZXBz0At+9avep+ub7U1AGYLIMM= github.com/pingcap/log v1.1.0/go.mod h1:DWQW5jICDR7UJh4HtxXSM20Churx4CQL0fwL/SoOSA4= @@ -763,16 +762,16 @@ github.com/pingcap/sarama v1.41.2-pingcap-20260622.1 h1:TrtpL+fs51pUc21CZ8mzIotO github.com/pingcap/sarama v1.41.2-pingcap-20260622.1/go.mod h1:PIL6ZKKKhm19IbQpmpJcFnybAi1yXtgLAitDAeBdNCw= github.com/pingcap/sysutil v1.0.1-0.20240311050922-ae81ee01f3a5 h1:T4pXRhBflzDeAhmOQHNPRRogMYxP13V7BkYw3ZsoSfE= github.com/pingcap/sysutil v1.0.1-0.20240311050922-ae81ee01f3a5/go.mod h1:rlimy0GcTvjiJqvD5mXTRr8O2eNZPBrcUgiWVYp9530= -github.com/pingcap/tidb v1.1.0-beta.0.20260625145450-3e4ee9fc99e7 h1:xhPN8ZqzLT1A0ke34Pi1uFsIN7vABs4mVAXous84/W8= -github.com/pingcap/tidb v1.1.0-beta.0.20260625145450-3e4ee9fc99e7/go.mod h1:BcXJZ9gPRlZrFJJ9OGNap9rMuXvZpHsEGxz8NS7pYWY= +github.com/pingcap/tidb v1.1.0-beta.0.20260812023830-6338c2776726 h1:s1BM7T7lczhzwv9Rz7zaDAalExFVHBsqyl1mdj+dMjc= +github.com/pingcap/tidb v1.1.0-beta.0.20260812023830-6338c2776726/go.mod h1:bLoByS0sAk37XgFbvwcuDRtD1ai4mKggEZAmtzUIHYM= github.com/pingcap/tidb-dashboard v0.0.0-20260316045729-aa6178a60657 h1:o/epSPBAWPf4LC4qTAw/AkDRid5ejP4EOcV2CSZ06gw= github.com/pingcap/tidb-dashboard v0.0.0-20260316045729-aa6178a60657/go.mod h1:3C4RKDXCp3OtN0EsL4Qec3/LFXyJsWITsLCmvNV3bZ4= -github.com/pingcap/tidb/pkg/parser v0.0.0-20260616034257-3adc8ec71ef3 h1:Bk3QuNvNLAt9EtTWGw6JfsUSvn1mC9rALpnRU/vDtz0= -github.com/pingcap/tidb/pkg/parser v0.0.0-20260616034257-3adc8ec71ef3/go.mod h1:zDLDsfNBU5+L6T4J9/OgWAHc/WZvMUjbpgHqQ/t3yKo= +github.com/pingcap/tidb/pkg/parser v0.0.0-20260812023830-6338c2776726 h1:2D1pfDwFaoy1jGBDsFPU7tVbbZFrGN1HXjik6MVTWJM= +github.com/pingcap/tidb/pkg/parser v0.0.0-20260812023830-6338c2776726/go.mod h1:zDLDsfNBU5+L6T4J9/OgWAHc/WZvMUjbpgHqQ/t3yKo= github.com/pingcap/tiflow v0.0.0-20260723070929-e8736df4fe74 h1:nGUVwdQMqd590TVOMITxr268HVTzBtFGswDEvJSwQfE= github.com/pingcap/tiflow v0.0.0-20260723070929-e8736df4fe74/go.mod h1:t5vaLtgdBIX7TR8yY3AuIq+hUsbJio8o5j1WBsoX7SU= -github.com/pingcap/tipb v0.0.0-20260617071407-7c071244534b h1:10OHx2/2noFfPU1K3c3QXZshsw3XvKssk/mjbLdw8DI= -github.com/pingcap/tipb v0.0.0-20260617071407-7c071244534b/go.mod h1:RM8iRcMalzOthG2XJxnNBniM4xFGb/lDwHUwqkaVzt4= +github.com/pingcap/tipb v0.0.0-20260623093813-5f9928e91afe h1:9I5GHZesmR+hv68t00BO7tayKMFfywi+hlpn119GscM= +github.com/pingcap/tipb v0.0.0-20260623093813-5f9928e91afe/go.mod h1:RM8iRcMalzOthG2XJxnNBniM4xFGb/lDwHUwqkaVzt4= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= @@ -821,8 +820,6 @@ github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94 github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= -github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/robfig/cron v1.2.0 h1:ZjScXvvxeQ63Dbyxy76Fj3AT3Ut0aKsyd2/tl3DTMuQ= github.com/robfig/cron v1.2.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= @@ -944,12 +941,12 @@ github.com/tidwall/rtred v0.1.2 h1:exmoQtOLvDoO8ud++6LwVsAMTu0KPzLTUrMln8u1yu8= github.com/tidwall/rtred v0.1.2/go.mod h1:hd69WNXQ5RP9vHd7dqekAz+RIdtfBogmglkZSRxCHFQ= github.com/tidwall/tinyqueue v0.1.1 h1:SpNEvEggbpyN5DIReaJ2/1ndroY8iyEGxPYxoSaymYE= github.com/tidwall/tinyqueue v0.1.1/go.mod h1:O/QNHwrnjqr6IHItYrzoHAKYhBkLI67Q096fQP5zMYw= -github.com/tikv/client-go/v2 v2.0.8-0.20260618054307-6125c3b05c6c h1:DoEVLcE/x0Yz4GjGSTh32vcvYIUZKKMp+VeSIr6NAh4= -github.com/tikv/client-go/v2 v2.0.8-0.20260618054307-6125c3b05c6c/go.mod h1:ifrCFaHJeZDcz6kded2eVwn+t3Auvqve8hI9vLIoVBg= +github.com/tikv/client-go/v2 v2.0.8-0.20260807103401-b75f6efa8ddd h1:2A+FjDtw0Ej6TT6fX496j+/jDNj7wz4ENMXnjOqhc80= +github.com/tikv/client-go/v2 v2.0.8-0.20260807103401-b75f6efa8ddd/go.mod h1:Bid1lF4a8ESuhOH7CeVobOrWxUJvtg16ZLBxogNuZWk= github.com/tikv/pd v1.1.0-beta.0.20260604125942-9f1c47b1e851 h1:2beLPo1vMSw9gpdcC5Fam/P5HaXRPmX4TEN2fv+7nKE= github.com/tikv/pd v1.1.0-beta.0.20260604125942-9f1c47b1e851/go.mod h1:Pb3H0cSkdiEdj761wzNziNHFOLVYuQmNgxQKp35UoxQ= -github.com/tikv/pd/client v0.0.0-20260604125942-9f1c47b1e851 h1:WhOxs9dUc4hZv9TkRTQ3e+jEIWpn5B2S+yzXZE7qn38= -github.com/tikv/pd/client v0.0.0-20260604125942-9f1c47b1e851/go.mod h1:GP9u8OBXqYQ6e43htjprZILrzn3tuogzkEEmmiNlzc4= +github.com/tikv/pd/client v0.0.0-20260805103528-afa43111d149 h1:q5NgKsvuOdEHspG/pZEpKhWlPLrIfmO8P/lDFjTEdok= +github.com/tikv/pd/client v0.0.0-20260805103528-afa43111d149/go.mod h1:sfdha4LXeUkSs2Z7N5jLzDEtm0GE7x+Glm2pW3UgEpA= github.com/tinylib/msgp v1.5.0 h1:GWnqAE54wmnlFazjq2+vgr736Akg58iiHImh+kPY2pc= github.com/tinylib/msgp v1.5.0/go.mod h1:cvjFkb4RiC8qSBOPMGPSzSAx47nAsfhLVTCZZNuHv5o= github.com/tjfoc/gmsm v1.3.2/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w= @@ -1027,8 +1024,8 @@ github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= -github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= -github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= +github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs= +github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s= github.com/zyedidia/generic v1.2.1 h1:Zv5KS/N2m0XZZiuLS82qheRG4X1o5gsWreGb0hR7XDc= github.com/zyedidia/generic v1.2.1/go.mod h1:ly2RBz4mnz1yeuVbQA/VFwGjK3mnHGRj1JuoG336Bis= go.etcd.io/bbolt v1.3.10 h1:+BqfJTcCzTItrop8mq/lbzL8wSGtj94UO/3U31shqG0= @@ -1071,8 +1068,8 @@ go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfC go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= -go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= -go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= +go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= +go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= @@ -1127,8 +1124,8 @@ golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto= golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= -golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= +golang.org/x/exp v0.0.0-20260112195511-716be5621a96 h1:Z/6YuSHTLOHfNFdb8zVZomZr7cqNgTJvA8+Qz75D8gU= +golang.org/x/exp v0.0.0-20260112195511-716be5621a96/go.mod h1:nzimsREAkjBCIEFtHiYkrJyT+2uy9YZJB7H1k68CXZU= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -1202,8 +1199,8 @@ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM= -golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= +golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1244,11 +1241,9 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw= -golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= +golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= -golang.org/x/telemetry v0.0.0-20260625142307-59b4966ccb57 h1:nwGZBCt+FnXUrGsj5vjzAsEmkcaFvd82BbOjECiFYZc= -golang.org/x/telemetry v0.0.0-20260625142307-59b4966ccb57/go.mod h1:3AWMyWHS+caVoiEXpiq6+tzKA40J4vQT3MYr80ZtQpc= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1336,8 +1331,8 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb h1:ITgPrl429bc6+2ZraNSzMDk3I95nmQln2fuPstKwFDE= -google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:sAo5UzpjUwgFBCzupwhcLcxHVDK7vG5IqI30YnwX2eE= +google.golang.org/genproto v0.0.0-20250324211829-b45e905df463 h1:qEFnJI6AnfZk0NNe8YTyXQh5i//Zxi4gBHwRgp76qpw= +google.golang.org/genproto v0.0.0-20250324211829-b45e905df463/go.mod h1:SqIx1NV9hcvqdLHo7uNZDS5lrUJybQ3evo3+z/WBfA0= google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478 h1:yQugLulqltosq0B/f8l4w9VryjV+N/5gcW0jQ3N8Qec= google.golang.org/genproto/googleapis/api v0.0.0-20260414002931-afd174a4e478/go.mod h1:C6ADNqOxbgdUUeRTU+LCHDPB9ttAMCTff6auwCVa4uc= google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 h1:RmoJA1ujG+/lRGNfUnOMfhCy5EipVMyvUE+KNbPbTlw= @@ -1355,8 +1350,8 @@ google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTp google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.82.1 h1:NnAxzGRA0677vCa4BUkOAnO5+FfQqVl9iUXeD0IqcGE= google.golang.org/grpc v1.82.1/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= -google.golang.org/grpc/examples v0.0.0-20231221225426-4f03f3ff32c9 h1:ATnmU8nL2NfIyTSiBvJVDIDIr3qBmeW+c7z7XU21eWs= -google.golang.org/grpc/examples v0.0.0-20231221225426-4f03f3ff32c9/go.mod h1:j5uROIAAgi3YmtiETMt1LW0d/lHqQ7wwrIY4uGRXLQ4= +google.golang.org/grpc/examples v0.0.0-20250407062114-b368379ef8f6 h1:ExN12ndbJ608cboPYflpTny6mXSzPrDLh0iTaVrRrds= +google.golang.org/grpc/examples v0.0.0-20250407062114-b368379ef8f6/go.mod h1:6ytKWczdvnpnO+m+JiG9NjEDzR1FJfsnmJdG7B8QVZ8= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/pkg/upstream/upstream.go b/pkg/upstream/upstream.go index ea21bb84ff..9c016c121f 100644 --- a/pkg/upstream/upstream.go +++ b/pkg/upstream/upstream.go @@ -145,6 +145,7 @@ func CreateTiStore(ctx context.Context, urls string, credential *security.Creden } // DisablePDRouterClient disables the streaming PD router used by a TiKV storage. +// To compact with old PD which doesn't support the `QueryRegion` API. func DisablePDRouterClient(storage tidbkv.Storage) error { provider, ok := storage.(pdClientProvider) if !ok { @@ -180,7 +181,7 @@ func initUpstream(ctx context.Context, up *Upstream, cfg *NodeTopologyCfg) (err if !up.isDefaultUpstream { up.PDClient, err = pd.NewClientWithContext( ctx, "cdc-upstream", up.PdEndpoints, up.SecurityConfig.PDSecurityOption(), - pdopt.WithEnableRouterClient(false), + pdopt.WithEnableRouterClient(false), // Compact with old PD which doesn't support the `QueryRegion` API. // the default `timeout` is 3s, maybe too small if the pd is busy, // set to 10s to avoid frequent timeout. pdopt.WithCustomTimeoutOption(10*time.Second), diff --git a/server/server_prepare.go b/server/server_prepare.go index 60621e4dc7..4dc8d29bf3 100644 --- a/server/server_prepare.go +++ b/server/server_prepare.go @@ -71,7 +71,7 @@ func (c *server) prepare(ctx context.Context) (err error) { MinConnectTimeout: 3 * time.Second, }), ), - pdopt.WithEnableRouterClient(false), + pdopt.WithEnableRouterClient(false), // Compact with old PD which doesn't support the `QueryRegion` API. pdopt.WithForwardingOption(config.EnablePDForwarding)) if err != nil { return errors.Trace(err) From cb5b6cea8305cc3adda6605d76f18f6cb842e2cf Mon Sep 17 00:00:00 2001 From: Ping Yu Date: Wed, 12 Aug 2026 18:48:35 +0800 Subject: [PATCH 12/12] address comments Signed-off-by: Ping Yu --- cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go | 13 ++++++---- .../cli_unsafe_verify_gc_safepoint_test.go | 25 +++++++++++++++++-- cmd/cdc/factory/factory_impl.go | 2 +- pkg/upstream/upstream.go | 4 +-- server/server_prepare.go | 2 +- 5 files changed, 35 insertions(+), 11 deletions(-) diff --git a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go index b750dbc850..3694e4c534 100644 --- a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go +++ b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint.go @@ -57,8 +57,8 @@ func (o *verifyGCSafepointOptions) complete(f factory.Factory) error { return err } o.pdClient = pdClient - o.listDatabases = func(ctx context.Context, keyspace string, snapshotTS uint64) (int, error) { - return listDatabasesAtSnapshot(ctx, f.GetPdAddr(), f.GetCredential(), keyspace, snapshotTS) + o.listDatabases = func(_ context.Context, keyspace string, snapshotTS uint64) (int, error) { + return listDatabasesAtSnapshot(f.GetPdAddr(), f.GetCredential(), keyspace, snapshotTS) } return nil } @@ -84,12 +84,16 @@ func (o *verifyGCSafepointOptions) run(cmd *cobra.Command) error { } else { gcState, err := o.pdClient.GetGCStatesClient(keyspaceMeta.GetId()).GetGCState(ctx) if err != nil { - return errors.WrapError(errors.ErrGetGCBarrierFailed, err) + return errors.Trace(err) } // Schema store uses the transaction safepoint as its initial metadata snapshot. snapshotTS = gcState.TxnSafePoint } - cmd.Printf("WARNING: no service safepoint blocks GC safepoint advancement; ListDatabases at snapshot %d may fail with a safepoint error.\n", snapshotTS) + if snapshotTS == 0 { + return errors.ErrGetServiceSafepointFailed.GenWithStackByArgs( + "safepoint is zero, keyspace GC state may be uninitialized") + } + cmd.Printf("WARNING: this verification holds no service safepoint; GC may advance past snapshot %d before the read completes.\n", snapshotTS) databaseCount, err := o.listDatabases(ctx, o.keyspace, snapshotTS) if err != nil { @@ -100,7 +104,6 @@ func (o *verifyGCSafepointOptions) run(cmd *cobra.Command) error { } func listDatabasesAtSnapshot( - _ context.Context, pdAddr string, credential *security.Credential, keyspace string, diff --git a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go index 51747fe38b..46514d105a 100644 --- a/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go +++ b/cmd/cdc/cli/cli_unsafe_verify_gc_safepoint_test.go @@ -97,7 +97,7 @@ func TestVerifyGCSafepointRun(t *testing.T) { require.Equal(t, "essential-v1", pdClient.loadedKeyspace) require.Equal(t, pdClient.keyspaceID, pdClient.requestedKeyspaceID) require.True(t, pdClient.closed) - require.Contains(t, output.String(), "WARNING: no service safepoint blocks GC safepoint advancement") + require.Contains(t, output.String(), "WARNING: this verification holds no service safepoint") require.Contains(t, output.String(), "databases: 3") }) @@ -146,7 +146,28 @@ func TestVerifyGCSafepointRun(t *testing.T) { err := o.run(cmd) require.ErrorContains(t, err, "meta store list databases") require.True(t, pdClient.closed) - require.Contains(t, output.String(), "may fail with a safepoint error") + require.Contains(t, output.String(), "before the read completes") + }) + + t.Run("zero safepoint is rejected", func(t *testing.T) { + pdClient := &verifyGCSafepointTestPDClient{ + keyspaceID: 42, + txnSafePoint: 0, + } + o := &verifyGCSafepointOptions{ + keyspace: "essential-v1", + pdClient: pdClient, + listDatabases: func(context.Context, string, uint64) (int, error) { + t.Fatal("listDatabases must not be called with a zero safepoint") + return 0, nil + }, + } + cmd := &cobra.Command{} + cmd.SetOut(new(bytes.Buffer)) + + err := o.run(cmd) + require.ErrorContains(t, err, "safepoint is zero") + require.True(t, pdClient.closed) }) } diff --git a/cmd/cdc/factory/factory_impl.go b/cmd/cdc/factory/factory_impl.go index 97bafab577..25b4bd6e07 100644 --- a/cmd/cdc/factory/factory_impl.go +++ b/cmd/cdc/factory/factory_impl.go @@ -138,7 +138,7 @@ func (f *factoryImpl) PdClient() (pd.Client, error) { pdClient, err := pd.NewClientWithContext( f.ctx, "cdc-factory", pdEndpoints, credential.PDSecurityOption(), pdopt.WithMaxErrorRetry(maxGetPDClientRetryTimes), - pdopt.WithEnableRouterClient(false), // Compact with old PD which doesn't support the `QueryRegion` API. + pdopt.WithEnableRouterClient(false), // Compatible with old PD which doesn't support the `QueryRegion` API. // TODO(hi-rustin): add gRPC metrics to Options. // See also: https://github.com/pingcap/tiflow/pull/2341#discussion_r673032407. pdopt.WithGRPCDialOptions( diff --git a/pkg/upstream/upstream.go b/pkg/upstream/upstream.go index 9c016c121f..16ef36d622 100644 --- a/pkg/upstream/upstream.go +++ b/pkg/upstream/upstream.go @@ -145,7 +145,7 @@ func CreateTiStore(ctx context.Context, urls string, credential *security.Creden } // DisablePDRouterClient disables the streaming PD router used by a TiKV storage. -// To compact with old PD which doesn't support the `QueryRegion` API. +// To be compatible with old PD which doesn't support the `QueryRegion` API. func DisablePDRouterClient(storage tidbkv.Storage) error { provider, ok := storage.(pdClientProvider) if !ok { @@ -181,7 +181,7 @@ func initUpstream(ctx context.Context, up *Upstream, cfg *NodeTopologyCfg) (err if !up.isDefaultUpstream { up.PDClient, err = pd.NewClientWithContext( ctx, "cdc-upstream", up.PdEndpoints, up.SecurityConfig.PDSecurityOption(), - pdopt.WithEnableRouterClient(false), // Compact with old PD which doesn't support the `QueryRegion` API. + pdopt.WithEnableRouterClient(false), // Compatible with old PD which doesn't support the `QueryRegion` API. // the default `timeout` is 3s, maybe too small if the pd is busy, // set to 10s to avoid frequent timeout. pdopt.WithCustomTimeoutOption(10*time.Second), diff --git a/server/server_prepare.go b/server/server_prepare.go index 4dc8d29bf3..b5ab9e32f8 100644 --- a/server/server_prepare.go +++ b/server/server_prepare.go @@ -71,7 +71,7 @@ func (c *server) prepare(ctx context.Context) (err error) { MinConnectTimeout: 3 * time.Second, }), ), - pdopt.WithEnableRouterClient(false), // Compact with old PD which doesn't support the `QueryRegion` API. + pdopt.WithEnableRouterClient(false), // Compatible with old PD which doesn't support the `QueryRegion` API. pdopt.WithForwardingOption(config.EnablePDForwarding)) if err != nil { return errors.Trace(err)