From 94e39599ae284a06e17043f549a2056341b527de Mon Sep 17 00:00:00 2001 From: Lucasliang Date: Tue, 31 Jan 2023 18:15:35 +0800 Subject: [PATCH 1/4] Introduce new replica_read mode `PreferLeader`. Signed-off-by: Lucasliang --- go.mod | 1 + go.sum | 4 ++-- kv/option.go | 2 ++ sessionctx/variable/sysvar.go | 4 +++- store/driver/options/options.go | 2 ++ 5 files changed, 10 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 88bc1f0fd6e53..edadb41fab0c0 100644 --- a/go.mod +++ b/go.mod @@ -276,5 +276,6 @@ replace ( // fix potential security issue(CVE-2020-26160) introduced by indirect dependency. github.com/dgrijalva/jwt-go => github.com/form3tech-oss/jwt-go v3.2.6-0.20210809144907-32ab6a8243d7+incompatible github.com/pingcap/tidb/parser => ./parser + github.com/tikv/client-go/v2 => github.com/LykxSassinator/client-go/v2 v2.0.0-20230131091257-ada803e8728e go.opencensus.io => go.opencensus.io v0.23.1-0.20220331163232-052120675fac ) diff --git a/go.sum b/go.sum index d74e95aeb8783..ba8566dd282cf 100644 --- a/go.sum +++ b/go.sum @@ -409,6 +409,8 @@ github.com/Jeffail/gabs/v2 v2.5.1 h1:ANfZYjpMlfTTKebycu4X1AgkVWumFVDYQl7JwOr4mDk github.com/Jeffail/gabs/v2 v2.5.1/go.mod h1:xCn81vdHKxFUuWWAaD5jCTQDNPBMh5pPs9IJ+NcziBI= github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= github.com/Joker/jade v1.0.1-0.20190614124447-d475f43051e7/go.mod h1:6E6s8o2AE4KhCrqr6GRJjdC/gNfTdxkIXvuGZZda2VM= +github.com/LykxSassinator/client-go/v2 v2.0.0-20230131091257-ada803e8728e h1:1XdsW0wFZo9MUKZqZggKRE39RTdAOp6OjWoLIqgUSVg= +github.com/LykxSassinator/client-go/v2 v2.0.0-20230131091257-ada803e8728e/go.mod h1:jc7J2EbNeVvU6eXmB50wAGrTPyJwdi+0ENccMXMFSpw= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= @@ -1308,8 +1310,6 @@ github.com/tiancaiamao/appdash v0.0.0-20181126055449-889f96f722a2 h1:mbAskLJ0oJf github.com/tiancaiamao/appdash v0.0.0-20181126055449-889f96f722a2/go.mod h1:2PfKggNGDuadAa0LElHrByyrz4JPZ9fFx6Gs7nx7ZZU= github.com/tiancaiamao/gp v0.0.0-20221230034425-4025bc8a4d4a h1:J/YdBZ46WKpXsxsW93SG+q0F8KI+yFrcIDT4c/RNoc4= github.com/tiancaiamao/gp v0.0.0-20221230034425-4025bc8a4d4a/go.mod h1:h4xBhSNtOeEosLJ4P7JyKXX7Cabg7AVkWCK5gV2vOrM= -github.com/tikv/client-go/v2 v2.0.5-0.20230120021435-f89383775234 h1:2BmijiUk1Hcv0z58DVk4ypwaNmgutzLc2YJm0SHPEWE= -github.com/tikv/client-go/v2 v2.0.5-0.20230120021435-f89383775234/go.mod h1:jc7J2EbNeVvU6eXmB50wAGrTPyJwdi+0ENccMXMFSpw= github.com/tikv/pd v1.1.0-beta.0.20230119114149-402c2bfee2f3 h1:cj3bhdIBJcLL2304EDEmd3eX+r73+hbGSYRFn/APiDU= github.com/tikv/pd v1.1.0-beta.0.20230119114149-402c2bfee2f3/go.mod h1:IFQZ85uu1438yp7Tb0xCgvw/BdSPReB9zcJsxXbyTP4= github.com/tikv/pd/client v0.0.0-20230119115149-5c518d079b93 h1:KK5bx0KLcpYUCnuQ06THPYT6QdAMfvwAtRQ0saVGD7k= diff --git a/kv/option.go b/kv/option.go index d779ff61ac215..631e69da7613d 100644 --- a/kv/option.go +++ b/kv/option.go @@ -117,6 +117,8 @@ const ( ReplicaReadClosestAdaptive // ReplicaReadLearner stands for 'read from learner'. ReplicaReadLearner + // ReplicaReadPreferLeader stands for 'read from leader and auto-turn to followers if leader is abnormal'. + ReplicaReadPreferLeader ) // IsFollowerRead checks if follower is going to be used to read data. diff --git a/sessionctx/variable/sysvar.go b/sessionctx/variable/sysvar.go index de0e5ffc90bd3..33e64da762ad6 100644 --- a/sessionctx/variable/sysvar.go +++ b/sessionctx/variable/sysvar.go @@ -1800,7 +1800,7 @@ var defaultSysVars = []*SysVar{ s.NoopFuncsMode = TiDBOptOnOffWarn(val) return nil }}, - {Scope: ScopeGlobal | ScopeSession, Name: TiDBReplicaRead, Value: "leader", Type: TypeEnum, PossibleValues: []string{"leader", "follower", "leader-and-follower", "closest-replicas", "closest-adaptive", "learner"}, SetSession: func(s *SessionVars, val string) error { + {Scope: ScopeGlobal | ScopeSession, Name: TiDBReplicaRead, Value: "leader", Type: TypeEnum, PossibleValues: []string{"leader", "prefer-leader", "follower", "leader-and-follower", "closest-replicas", "closest-adaptive", "learner"}, SetSession: func(s *SessionVars, val string) error { if strings.EqualFold(val, "follower") { s.SetReplicaRead(kv.ReplicaReadFollower) } else if strings.EqualFold(val, "leader-and-follower") { @@ -1813,6 +1813,8 @@ var defaultSysVars = []*SysVar{ s.SetReplicaRead(kv.ReplicaReadClosestAdaptive) } else if strings.EqualFold(val, "learner") { s.SetReplicaRead(kv.ReplicaReadLearner) + } else if strings.EqualFold(val, "prefer-leader") { + s.SetReplicaRead(kv.ReplicaReadPreferLeader) } return nil }}, diff --git a/store/driver/options/options.go b/store/driver/options/options.go index f3d5471aa440f..c2b3b52e177b8 100644 --- a/store/driver/options/options.go +++ b/store/driver/options/options.go @@ -34,6 +34,8 @@ func GetTiKVReplicaReadType(t kv.ReplicaReadType) storekv.ReplicaReadType { return storekv.ReplicaReadMixed case kv.ReplicaReadLearner: return storekv.ReplicaReadLearner + case kv.ReplicaReadPreferLeader: + return storekv.ReplicaReadPreferLeader } return 0 } From 31a7daa84838dbe541da9b716744eb3df31d56dc Mon Sep 17 00:00:00 2001 From: Lucasliang Date: Wed, 8 Feb 2023 10:36:44 +0800 Subject: [PATCH 2/4] Revoke the private dependency of client-go. Signed-off-by: Lucasliang --- go.mod | 1 - go.sum | 2 -- 2 files changed, 3 deletions(-) diff --git a/go.mod b/go.mod index 8af60e0709c7e..5b2d4f414b4de 100644 --- a/go.mod +++ b/go.mod @@ -275,6 +275,5 @@ replace ( // fix potential security issue(CVE-2020-26160) introduced by indirect dependency. github.com/dgrijalva/jwt-go => github.com/form3tech-oss/jwt-go v3.2.6-0.20210809144907-32ab6a8243d7+incompatible github.com/pingcap/tidb/parser => ./parser - github.com/tikv/client-go/v2 => github.com/LykxSassinator/client-go/v2 v2.0.0-20230131091257-ada803e8728e go.opencensus.io => go.opencensus.io v0.23.1-0.20220331163232-052120675fac ) diff --git a/go.sum b/go.sum index d13e22995368b..9fc6d63beb8f8 100644 --- a/go.sum +++ b/go.sum @@ -71,8 +71,6 @@ github.com/Jeffail/gabs/v2 v2.5.1 h1:ANfZYjpMlfTTKebycu4X1AgkVWumFVDYQl7JwOr4mDk github.com/Jeffail/gabs/v2 v2.5.1/go.mod h1:xCn81vdHKxFUuWWAaD5jCTQDNPBMh5pPs9IJ+NcziBI= github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= github.com/Joker/jade v1.0.1-0.20190614124447-d475f43051e7/go.mod h1:6E6s8o2AE4KhCrqr6GRJjdC/gNfTdxkIXvuGZZda2VM= -github.com/LykxSassinator/client-go/v2 v2.0.0-20230131091257-ada803e8728e h1:1XdsW0wFZo9MUKZqZggKRE39RTdAOp6OjWoLIqgUSVg= -github.com/LykxSassinator/client-go/v2 v2.0.0-20230131091257-ada803e8728e/go.mod h1:jc7J2EbNeVvU6eXmB50wAGrTPyJwdi+0ENccMXMFSpw= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= From 7776186f726fca5713dffc2d3c45e9265f06fcda Mon Sep 17 00:00:00 2001 From: Lucasliang Date: Wed, 8 Feb 2023 14:34:36 +0800 Subject: [PATCH 3/4] Limit the ci memory resource to 6g. Signed-off-by: Lucasliang --- .bazelrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.bazelrc b/.bazelrc index 1ac13a3e138a7..14476bb7c51db 100644 --- a/.bazelrc +++ b/.bazelrc @@ -1,4 +1,4 @@ -startup --host_jvm_args=-Xmx8g +startup --host_jvm_args=-Xmx6g startup --unlimit_coredumps run:ci --color=yes From 7c42e229bef88cbd2607f55bd53c0ff2f285629e Mon Sep 17 00:00:00 2001 From: Lucasliang Date: Wed, 8 Feb 2023 15:10:23 +0800 Subject: [PATCH 4/4] Revoke the limit of ci resources. Signed-off-by: Lucasliang --- .bazelrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.bazelrc b/.bazelrc index 14476bb7c51db..1ac13a3e138a7 100644 --- a/.bazelrc +++ b/.bazelrc @@ -1,4 +1,4 @@ -startup --host_jvm_args=-Xmx6g +startup --host_jvm_args=-Xmx8g startup --unlimit_coredumps run:ci --color=yes