Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

merge master for cse region client #1083

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
c5bf330
expand min-resolved-ts to support stores
HuSharp Aug 2, 2023
359295c
refine variables name and modify tests
HuSharp Aug 2, 2023
0930be9
remove ci
HuSharp Aug 2, 2023
1ee6c84
reduce redundant export
HuSharp Aug 3, 2023
3f36b93
fix error
HuSharp Aug 9, 2023
44f5025
fallback to follower when leader is busy (#916) (#923)
you06 Aug 11, 2023
1a932e7
suuport api bench for params
HuSharp Aug 14, 2023
d8451eb
Merge branch 'master' into get_min_resolved_ts_by_stores
HuSharp Aug 14, 2023
b771e63
make ci happy
HuSharp Aug 14, 2023
a0ac170
handle mismatch peer id (#935)
you06 Aug 14, 2023
15c6994
Merge branch 'master' into get_min_resolved_ts_by_stores
HuSharp Aug 14, 2023
c65aaeb
address comment
HuSharp Aug 16, 2023
cedc94b
use config instead
HuSharp Aug 16, 2023
97f9c18
nit change
HuSharp Aug 21, 2023
1ea3d66
use leader read when `tryFollower` is fallback from `accessKnownLeade…
you06 Aug 22, 2023
ff39b4a
error: handle bucket version not match (#918)
bufferflies Aug 22, 2023
fc88757
log: group replica selector logging and split not leader errors (#929)
cfzjywxk Aug 24, 2023
295094e
add retry info to request source (#953)
you06 Aug 29, 2023
a8860a9
gc: add resolve locks interface for tidb gc_worker (#945)
3pointer Aug 29, 2023
75a9879
merge master
HuSharp Aug 30, 2023
322775f
merge master
HuSharp Aug 30, 2023
5c9fcf3
metrics: add bucket version not match metrics (#957)
bufferflies Aug 30, 2023
3c7fc08
rebase gomod
HuSharp Aug 31, 2023
b61256b
Merge branch 'master' into get_min_resolved_ts_by_stores
HuSharp Aug 31, 2023
ae859e2
refine test
HuSharp Sep 1, 2023
5527f3d
address comment
HuSharp Sep 1, 2023
5dd12b0
Merge pull request #921 from HuSharp/get_min_resolved_ts_by_stores
bufferflies Sep 5, 2023
89493ff
set the request source at the last section (#960)
you06 Sep 7, 2023
94e94cb
update kvproto
bufferflies Sep 8, 2023
dbe9bcf
Merge pull request #962 from bufferflies/update_kvproto
bufferflies Sep 8, 2023
ba3de39
*: fix panic log
crazycs520 Sep 11, 2023
f9e2871
Merge pull request #967 from crazycs520/refine-log2
you06 Sep 11, 2023
3216af2
add cancel reason
bufferflies Sep 12, 2023
62a297a
add log
bufferflies Sep 12, 2023
fb8e4c0
add region cache state test & fix some issues of replica selector (#9…
you06 Sep 12, 2023
79843ce
Merge branch 'master' into add_log
bufferflies Sep 12, 2023
78834ee
Merge pull request #968 from bufferflies/add_log
bufferflies Sep 12, 2023
001735b
*: try follower when stale read request timeout (#969)
crazycs520 Sep 15, 2023
3423016
*: fix issue of configure kv timeout not work when disable batch clie…
crazycs520 Sep 15, 2023
3908438
*: configurable kv_read_timeout should not affect write request (#978)
crazycs520 Sep 18, 2023
adb7db1
*: fix batch-client wait too long and add some metrics (#973)
crazycs520 Sep 18, 2023
330fc8d
add util to set dns server (#927)
Smityz Sep 18, 2023
be2b4c7
Revert "*: fix batch-client wait too long and add some metrics (#973)…
crazycs520 Sep 19, 2023
c8832b8
resource_control: add stats task (#985)
nolouch Sep 21, 2023
44b0cf7
do not try leader if it's unreachable (#971)
zyguan Sep 25, 2023
4c2ae43
dco (#988)
bufferflies Sep 26, 2023
daed9fd
metrics: make upper limit of RPC latency larger (#997)
jackysp Oct 7, 2023
b535011
update fo mod (#995)
HuSharp Oct 7, 2023
1a44252
*: add metrics for batch client (#996)
crazycs520 Oct 7, 2023
a05564b
log: Enhanced log key output (#958)
HuSharp Oct 7, 2023
18a8414
*: fix data race at the aggressiveLockingDirty (#913)
hawkingrei Oct 8, 2023
652de4d
min-safe-ts: fix MinSafeTS might be set to MaxUint64 permanently (#994)
HuSharp Oct 9, 2023
07432ef
refactor the func name to make it clear (#1000)
cfzjywxk Oct 10, 2023
e70513e
bugfix: fix invalid nil pointer when trying to record Store.SlownessS…
LykxSassinator Oct 16, 2023
2eaf68e
Fix batch client batchSendLoop panic (#1021)
crazycs520 Oct 17, 2023
888cbb2
add retry limit for excluded backoff type to avoid infinite retry (#1…
cfzjywxk Oct 18, 2023
7172eb5
Bump golang.org/x/net in /examples/txnkv/async_commit (#1006)
dependabot[bot] Oct 18, 2023
75e3c72
Bump golang.org/x/net from 0.10.0 to 0.17.0 in /examples/rawkv (#1007)
dependabot[bot] Oct 18, 2023
e4dcb91
Bump golang.org/x/net in /examples/txnkv/unsafedestoryrange (#1009)
dependabot[bot] Oct 18, 2023
b1611f7
Bump golang.org/x/net in /examples/txnkv/delete_range (#1008)
dependabot[bot] Oct 20, 2023
671033c
Bump golang.org/x/net from 0.10.0 to 0.17.0 in /examples/txnkv/1pc_tx…
dependabot[bot] Oct 20, 2023
49734c3
Bump golang.org/x/net from 0.10.0 to 0.17.0 in /examples/txnkv (#1012)
dependabot[bot] Oct 20, 2023
ec40555
Bump golang.org/x/net from 0.15.0 to 0.17.0 in /integration_tests (#1…
dependabot[bot] Oct 20, 2023
476ea22
fix request source tag unset (#1025)
crazycs520 Oct 20, 2023
7e16fe4
Bump golang.org/x/net from 0.10.0 to 0.17.0 in /examples/gcworker (#1…
dependabot[bot] Oct 20, 2023
d1f15f9
Bump golang.org/x/net in /examples/txnkv/pessimistic_txn (#1013)
dependabot[bot] Oct 20, 2023
e08b7c4
Bump golang.org/x/net from 0.10.0 to 0.17.0 (#1005)
dependabot[bot] Oct 20, 2023
33e722e
Call pd.NewClientWithContext in NewClientWithOpts (#1019)
healthwaite Oct 20, 2023
cad3142
schedule async reload for region that has unavailable tiflash peers t…
windtalker Oct 25, 2023
7695180
save work (#1031)
windtalker Oct 25, 2023
3520f13
*: upgrade grpc and etcd (#1044)
hawkingrei Oct 30, 2023
1362f1e
Revert "*: add metrics for batch client (#996)" (#1046)
crazycs520 Oct 30, 2023
f990d49
Bump google.golang.org/grpc in /examples/txnkv/1pc_txn (#1042)
dependabot[bot] Nov 7, 2023
a418afd
Bump google.golang.org/grpc in /examples/txnkv/unsafedestoryrange (#1…
dependabot[bot] Nov 7, 2023
217b915
Bump google.golang.org/grpc in /examples/txnkv/async_commit (#1039)
dependabot[bot] Nov 7, 2023
7c2949f
Bump google.golang.org/grpc in /examples/txnkv/delete_range (#1037)
dependabot[bot] Nov 7, 2023
ea379b0
Bump google.golang.org/grpc in /examples/txnkv/pessimistic_txn (#1036)
dependabot[bot] Nov 7, 2023
845e3b0
Support to integrate with the PD HTTP client (#1049)
JmPotato Nov 9, 2023
9caddec
Update PD client to the latest version (#1056)
JmPotato Nov 13, 2023
8fc8a52
Refine the init method of PD HTTP client (#1058)
JmPotato Nov 14, 2023
6ba909c
config: enable user configuration for retry strategy. (#1055)
Smityz Nov 14, 2023
c129e1b
Fix comment of `SuspendTime` (#1057)
ekexium Nov 14, 2023
6659170
make `ContainsByEnd` return `true` when the key is empty and region's…
YuJuncen Nov 14, 2023
7c96dfd
tso: merge lastTS and lastArrivalTS into an atomic pointer (#1054)
you06 Nov 15, 2023
1c2351c
resource_control: set override_priority with resource group priority …
glorv Nov 16, 2023
812a791
ci: make golangci happy (#1066)
HuSharp Nov 21, 2023
0ff1662
pd client: uprade and fit get region option (#1069)
CabinfeverB Dec 1, 2023
0336665
Update TiDB version in the integration test (#1071)
JmPotato Dec 4, 2023
e80e9ca
resource_control: add ru details in ExecDetails (#1070)
glorv Dec 4, 2023
8deef63
region_cache: no need to metrics when inserting for scan regions (#1077)
CabinfeverB Dec 18, 2023
6f9ba83
Update the PD HTTP client to support source mark (#1081)
JmPotato Dec 19, 2023
4ce1e45
add a helper function for new ru details (#1078)
glorv Dec 20, 2023
85ca0a4
region_cache: check epoch before insert (#1079)
CabinfeverB Dec 20, 2023
1a33aca
region_cache: allow pd follower handle region api (#1072)
CabinfeverB Dec 20, 2023
2a68108
Merge branch 'master' of github.com:tikv/client-go into cse-region-cl…
iosmanthus Dec 20, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions internal/retry/backoff.go → config/retry/backoff.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,13 @@ func (b *Backoffer) BackoffWithCfgAndMaxSleep(cfg *Config, maxSleepMs int, err e
if b.noop {
return err
}
if b.maxSleep > 0 && (b.totalSleep-b.excludedSleep) >= b.maxSleep {
maxBackoffTimeExceeded := (b.totalSleep - b.excludedSleep) >= b.maxSleep
maxExcludedTimeExceeded := false
if maxLimit, ok := isSleepExcluded[cfg.name]; ok {
maxExcludedTimeExceeded = b.excludedSleep >= maxLimit && b.excludedSleep >= b.maxSleep
}
maxTimeExceeded := maxBackoffTimeExceeded || maxExcludedTimeExceeded
if b.maxSleep > 0 && maxTimeExceeded {
longestSleepCfg, longestSleepTime := b.longestSleepCfg()
errMsg := fmt.Sprintf("%s backoffer.maxSleep %dms is exceeded, errors:", cfg.String(), b.maxSleep)
for i, err := range b.errors {
Expand All @@ -163,7 +169,8 @@ func (b *Backoffer) BackoffWithCfgAndMaxSleep(cfg *Config, maxSleepMs int, err e
backoffDetail.WriteString(":")
backoffDetail.WriteString(strconv.Itoa(times))
}
errMsg += fmt.Sprintf("\ntotal-backoff-times: %v, backoff-detail: %v", totalTimes, backoffDetail.String())
errMsg += fmt.Sprintf("\ntotal-backoff-times: %v, backoff-detail: %v, maxBackoffTimeExceeded: %v, maxExcludedTimeExceeded: %v",
totalTimes, backoffDetail.String(), maxBackoffTimeExceeded, maxExcludedTimeExceeded)
returnedErr := err
if longestSleepCfg != nil {
errMsg += fmt.Sprintf("\nlongest sleep type: %s, time: %dms", longestSleepCfg.String(), longestSleepTime)
Expand Down
14 changes: 13 additions & 1 deletion internal/retry/backoff_test.go → config/retry/backoff_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ func TestBackoffErrorType(t *testing.T) {
err = b.Backoff(BoIsWitness, errors.New("peer is witness"))
assert.Nil(t, err)
// wait it exceed max sleep
for i := 0; i < 10; i++ {
for i := 0; i < 15; i++ {
err = b.Backoff(BoTxnNotFound, errors.New("txn not found"))
if err != nil {
// Next backoff should return error of backoff that sleeps for longest time.
Expand All @@ -98,3 +98,15 @@ func TestBackoffDeepCopy(t *testing.T) {
assert.ErrorIs(t, err, BoMaxDataNotReady.err)
}
}

func TestBackoffWithMaxExcludedExceed(t *testing.T) {
setBackoffExcluded(BoTiKVServerBusy.name, 1)
b := NewBackofferWithVars(context.TODO(), 1, nil)
err := b.Backoff(BoTiKVServerBusy, errors.New("server is busy"))
assert.Nil(t, err)

// As the total excluded sleep is greater than the max limited value, error should be returned.
err = b.Backoff(BoTiKVServerBusy, errors.New("server is busy"))
assert.NotNil(t, err)
assert.Greater(t, b.excludedSleep, b.maxSleep)
}
207 changes: 207 additions & 0 deletions config/retry/config.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
// Copyright 2021 TiKV Authors
//
// 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,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// NOTE: The code in this file is based on code from the
// TiDB project, licensed under the Apache License v 2.0
//
// https://github.com/pingcap/tidb/tree/cc5e161ac06827589c4966674597c137cc9e809c/store/tikv/retry/config.go
//

// Copyright 2021 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,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package retry

import (
"context"
"math"
"math/rand"
"strings"
"time"

"github.com/prometheus/client_golang/prometheus"
tikverr "github.com/tikv/client-go/v2/error"
"github.com/tikv/client-go/v2/internal/logutil"
"github.com/tikv/client-go/v2/kv"
"github.com/tikv/client-go/v2/metrics"
"go.uber.org/zap"
)

// Config is the configuration of the Backoff function.
type Config struct {
name string
metric *prometheus.Observer
fnCfg *BackoffFnCfg
err error
}

// backoffFn is the backoff function which compute the sleep time and do sleep.
type backoffFn func(ctx context.Context, maxSleepMs int) int

func (c *Config) createBackoffFn(vars *kv.Variables) backoffFn {
if strings.EqualFold(c.name, txnLockFastName) {
return newBackoffFn(vars.BackoffLockFast, c.fnCfg.cap, c.fnCfg.jitter)
}
return newBackoffFn(c.fnCfg.base, c.fnCfg.cap, c.fnCfg.jitter)
}

// BackoffFnCfg is the configuration for the backoff func which implements exponential backoff with
// optional jitters.
// See http://www.awsarchitectureblog.com/2015/03/backoff.html
type BackoffFnCfg struct {
base int
cap int
jitter int
}

// NewBackoffFnCfg creates the config for BackoffFn.
func NewBackoffFnCfg(base, cap, jitter int) *BackoffFnCfg {
return &BackoffFnCfg{
base,
cap,
jitter,
}
}

// NewConfig creates a new Config for the Backoff operation.
func NewConfig(name string, metric *prometheus.Observer, backoffFnCfg *BackoffFnCfg, err error) *Config {
return &Config{
name: name,
metric: metric,
fnCfg: backoffFnCfg,
err: err,
}
}

func (c *Config) String() string {
return c.name
}

// SetErrors sets a more detailed error instead of the default bo config.
func (c *Config) SetErrors(err error) {
c.err = err
}

func (c *Config) SetBackoffFnCfg(fnCfg *BackoffFnCfg) {
c.fnCfg = fnCfg
}

const txnLockFastName = "txnLockFast"

// Backoff Config variables.
var (
// TODO: distinguish tikv and tiflash in metrics
BoTiKVRPC = NewConfig("tikvRPC", &metrics.BackoffHistogramRPC, NewBackoffFnCfg(100, 2000, EqualJitter), tikverr.ErrTiKVServerTimeout)
BoTiFlashRPC = NewConfig("tiflashRPC", &metrics.BackoffHistogramRPC, NewBackoffFnCfg(100, 2000, EqualJitter), tikverr.ErrTiFlashServerTimeout)
BoTxnLock = NewConfig("txnLock", &metrics.BackoffHistogramLock, NewBackoffFnCfg(100, 3000, EqualJitter), tikverr.ErrResolveLockTimeout)
BoPDRPC = NewConfig("pdRPC", &metrics.BackoffHistogramPD, NewBackoffFnCfg(500, 3000, EqualJitter), tikverr.NewErrPDServerTimeout(""))
// change base time to 2ms, because it may recover soon.
BoRegionMiss = NewConfig("regionMiss", &metrics.BackoffHistogramRegionMiss, NewBackoffFnCfg(2, 500, NoJitter), tikverr.ErrRegionUnavailable)
BoRegionScheduling = NewConfig("regionScheduling", &metrics.BackoffHistogramRegionScheduling, NewBackoffFnCfg(2, 500, NoJitter), tikverr.ErrRegionUnavailable)
BoTiKVServerBusy = NewConfig("tikvServerBusy", &metrics.BackoffHistogramServerBusy, NewBackoffFnCfg(2000, 10000, EqualJitter), tikverr.ErrTiKVServerBusy)
BoTiKVDiskFull = NewConfig("tikvDiskFull", &metrics.BackoffHistogramTiKVDiskFull, NewBackoffFnCfg(500, 5000, NoJitter), tikverr.ErrTiKVDiskFull)
BoRegionRecoveryInProgress = NewConfig("regionRecoveryInProgress", &metrics.BackoffHistogramRegionRecoveryInProgress, NewBackoffFnCfg(100, 10000, EqualJitter), tikverr.ErrRegionRecoveryInProgress)
BoTiFlashServerBusy = NewConfig("tiflashServerBusy", &metrics.BackoffHistogramServerBusy, NewBackoffFnCfg(2000, 10000, EqualJitter), tikverr.ErrTiFlashServerBusy)
BoTxnNotFound = NewConfig("txnNotFound", &metrics.BackoffHistogramEmpty, NewBackoffFnCfg(2, 500, NoJitter), tikverr.ErrResolveLockTimeout)
BoStaleCmd = NewConfig("staleCommand", &metrics.BackoffHistogramStaleCmd, NewBackoffFnCfg(2, 1000, NoJitter), tikverr.ErrTiKVStaleCommand)
BoMaxTsNotSynced = NewConfig("maxTsNotSynced", &metrics.BackoffHistogramEmpty, NewBackoffFnCfg(2, 500, NoJitter), tikverr.ErrTiKVMaxTimestampNotSynced)
BoMaxDataNotReady = NewConfig("dataNotReady", &metrics.BackoffHistogramDataNotReady, NewBackoffFnCfg(2, 2000, NoJitter), tikverr.ErrRegionDataNotReady)
BoMaxRegionNotInitialized = NewConfig("regionNotInitialized", &metrics.BackoffHistogramEmpty, NewBackoffFnCfg(2, 1000, NoJitter), tikverr.ErrRegionNotInitialized)
BoIsWitness = NewConfig("isWitness", &metrics.BackoffHistogramIsWitness, NewBackoffFnCfg(1000, 10000, EqualJitter), tikverr.ErrIsWitness)
// TxnLockFast's `base` load from vars.BackoffLockFast when create BackoffFn.
BoTxnLockFast = NewConfig(txnLockFastName, &metrics.BackoffHistogramLockFast, NewBackoffFnCfg(2, 3000, EqualJitter), tikverr.ErrResolveLockTimeout)
)

var isSleepExcluded = map[string]int{
BoTiKVServerBusy.name: 600000, // The max excluded limit is 10min.
// add BoTiFlashServerBusy if appropriate
}

// setBackoffExcluded is used for test only.
func setBackoffExcluded(name string, maxVal int) {
if _, ok := isSleepExcluded[name]; ok {
isSleepExcluded[name] = maxVal
}
}

const (
// NoJitter makes the backoff sequence strict exponential.
NoJitter = 1 + iota
// FullJitter applies random factors to strict exponential.
FullJitter
// EqualJitter is also randomized, but prevents very short sleeps.
EqualJitter
// DecorrJitter increases the maximum jitter based on the last random value.
DecorrJitter
)

// newBackoffFn creates a backoff func which implements exponential backoff with
// optional jitters.
// See http://www.awsarchitectureblog.com/2015/03/backoff.html
func newBackoffFn(base, cap, jitter int) backoffFn {
if base < 2 {
// Top prevent panic in 'rand.Intn'.
base = 2
}
attempts := 0
lastSleep := base
return func(ctx context.Context, maxSleepMs int) int {
var sleep int
switch jitter {
case NoJitter:
sleep = expo(base, cap, attempts)
case FullJitter:
v := expo(base, cap, attempts)
sleep = rand.Intn(v)
case EqualJitter:
v := expo(base, cap, attempts)
sleep = v/2 + rand.Intn(v/2)
case DecorrJitter:
sleep = int(math.Min(float64(cap), float64(base+rand.Intn(lastSleep*3-base))))
}
logutil.BgLogger().Debug("backoff",
zap.Int("base", base),
zap.Int("sleep", sleep),
zap.Int("attempts", attempts))

realSleep := sleep
// when set maxSleepMs >= 0 in `tikv.BackoffWithMaxSleep` will force sleep maxSleepMs milliseconds.
if maxSleepMs >= 0 && realSleep > maxSleepMs {
realSleep = maxSleepMs
}
select {
case <-time.After(time.Duration(realSleep) * time.Millisecond):
attempts++
lastSleep = sleep
return realSleep
case <-ctx.Done():
return 0
}
}
}

func expo(base, cap, n int) int {
return int(math.Min(float64(cap), float64(base)*math.Pow(2.0, float64(n))))
}
File renamed without changes.
49 changes: 48 additions & 1 deletion examples/gcworker/go.mod
Original file line number Diff line number Diff line change
@@ -1,7 +1,54 @@
module gcworker

go 1.20
go 1.21

require github.com/tikv/client-go/v2 v2.0.0

require (
github.com/beorn7/perks v1.0.1 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/cloudfoundry/gosigar v1.3.6 // indirect
github.com/coreos/go-semver v0.3.1 // indirect
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548 // indirect
github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/google/btree v1.1.2 // indirect
github.com/google/uuid v1.3.1 // indirect
github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
github.com/pingcap/errors v0.11.5-0.20211224045212-9687c2b0f87c // indirect
github.com/pingcap/failpoint v0.0.0-20220801062533-2eaa32854a6c // indirect
github.com/pingcap/kvproto v0.0.0-20230904082117-ecdbf1f8c130 // indirect
github.com/pingcap/log v1.1.1-0.20221110025148-ca232912c9f3 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/prometheus/client_golang v1.15.1 // indirect
github.com/prometheus/client_model v0.3.0 // indirect
github.com/prometheus/common v0.42.0 // indirect
github.com/prometheus/procfs v0.9.0 // indirect
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect
github.com/tiancaiamao/gp v0.0.0-20221230034425-4025bc8a4d4a // indirect
github.com/tikv/pd/client v0.0.0-20230724080549-de985b8e0afc // indirect
github.com/twmb/murmur3 v1.1.3 // indirect
go.etcd.io/etcd/api/v3 v3.5.10 // indirect
go.etcd.io/etcd/client/pkg/v3 v3.5.10 // indirect
go.etcd.io/etcd/client/v3 v3.5.10 // indirect
go.uber.org/atomic v1.11.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.26.0 // indirect
golang.org/x/exp v0.0.0-20230711005742-c3f37128e5a4 // indirect
golang.org/x/net v0.17.0 // indirect
golang.org/x/sync v0.3.0 // indirect
golang.org/x/sys v0.13.0 // indirect
golang.org/x/text v0.13.0 // indirect
google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect
google.golang.org/grpc v1.59.0 // indirect
google.golang.org/protobuf v1.31.0 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
)

replace github.com/tikv/client-go/v2 => ../../
49 changes: 48 additions & 1 deletion examples/rawkv/go.mod
Original file line number Diff line number Diff line change
@@ -1,7 +1,54 @@
module rawkv

go 1.20
go 1.21

require github.com/tikv/client-go/v2 v2.0.0

require (
github.com/benbjohnson/clock v1.3.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/cloudfoundry/gosigar v1.3.6 // indirect
github.com/coreos/go-semver v0.3.1 // indirect
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548 // indirect
github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/google/btree v1.1.2 // indirect
github.com/google/uuid v1.3.1 // indirect
github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
github.com/pingcap/errors v0.11.5-0.20211224045212-9687c2b0f87c // indirect
github.com/pingcap/failpoint v0.0.0-20220801062533-2eaa32854a6c // indirect
github.com/pingcap/kvproto v0.0.0-20230904082117-ecdbf1f8c130 // indirect
github.com/pingcap/log v1.1.1-0.20221110025148-ca232912c9f3 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/prometheus/client_golang v1.15.1 // indirect
github.com/prometheus/client_model v0.3.0 // indirect
github.com/prometheus/common v0.42.0 // indirect
github.com/prometheus/procfs v0.9.0 // indirect
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect
github.com/tiancaiamao/gp v0.0.0-20221230034425-4025bc8a4d4a // indirect
github.com/tikv/pd/client v0.0.0-20230724080549-de985b8e0afc // indirect
github.com/twmb/murmur3 v1.1.3 // indirect
go.etcd.io/etcd/api/v3 v3.5.10 // indirect
go.etcd.io/etcd/client/pkg/v3 v3.5.10 // indirect
go.etcd.io/etcd/client/v3 v3.5.10 // indirect
go.uber.org/atomic v1.11.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.26.0 // indirect
golang.org/x/exp v0.0.0-20230711005742-c3f37128e5a4 // indirect
golang.org/x/net v0.17.0 // indirect
golang.org/x/sync v0.3.0 // indirect
golang.org/x/sys v0.13.0 // indirect
golang.org/x/text v0.13.0 // indirect
google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect
google.golang.org/grpc v1.59.0 // indirect
google.golang.org/protobuf v1.31.0 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
)

replace github.com/tikv/client-go/v2 => ../../
Loading
Loading