Skip to content

Commit 1d45ae8

Browse files
committed
update pd client
Signed-off-by: husharp <jinhao.hu@pingcap.com>
1 parent f0575a8 commit 1d45ae8

File tree

6 files changed

+56
-34
lines changed

6 files changed

+56
-34
lines changed

domain/globalconfigsync/globalconfig.go

+1-4
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,6 @@ import (
2222
"go.uber.org/zap"
2323
)
2424

25-
// GlobalConfigPath as Etcd prefix
26-
const GlobalConfigPath = "/global/config/"
27-
2825
// GlobalConfigSyncer is used to sync pd global config.
2926
type GlobalConfigSyncer struct {
3027
pd pd.Client
@@ -44,7 +41,7 @@ func (s *GlobalConfigSyncer) StoreGlobalConfig(ctx context.Context, item pd.Glob
4441
if s.pd == nil {
4542
return nil
4643
}
47-
err := s.pd.StoreGlobalConfig(ctx, GlobalConfigPath, []pd.GlobalConfigItem{item})
44+
err := s.pd.StoreGlobalConfig(ctx, "", []pd.GlobalConfigItem{item})
4845
if err != nil {
4946
return err
5047
}

domain/globalconfigsync/globalconfig_test.go

+5-6
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ package globalconfigsync_test
1616

1717
import (
1818
"context"
19-
"path"
2019
"runtime"
2120
"testing"
2221
"time"
@@ -59,10 +58,10 @@ func TestGlobalConfigSyncer(t *testing.T) {
5958
syncer.Notify(pd.GlobalConfigItem{Name: "a", Value: "b"})
6059
err = syncer.StoreGlobalConfig(context.Background(), <-syncer.NotifyCh)
6160
require.NoError(t, err)
62-
items, revision, err := client.LoadGlobalConfig(context.Background(), globalconfigsync.GlobalConfigPath)
61+
items, revision, err := client.LoadGlobalConfig(context.Background(), []string{"a"}, "")
6362
require.NoError(t, err)
6463
require.Equal(t, 1, len(items))
65-
require.Equal(t, path.Join(globalconfigsync.GlobalConfigPath, "a"), items[0].Name)
64+
require.Equal(t, "/global/config/a", items[0].Name)
6665
require.Equal(t, int64(0), revision)
6766
require.Equal(t, "b", items[0].Value)
6867
}
@@ -97,15 +96,15 @@ func TestStoreGlobalConfig(t *testing.T) {
9796
client :=
9897
store.(kv.StorageWithPD).GetPDClient()
9998
// enable top sql will be translated to enable_resource_metering
100-
items, _, err := client.LoadGlobalConfig(context.Background(), globalconfigsync.GlobalConfigPath)
99+
items, _, err := client.LoadGlobalConfig(context.Background(), []string{"enable_resource_metering", "source_id"}, "")
101100
require.NoError(t, err)
102101
if len(items) == 2 && items[0].Value == "" {
103102
continue
104103
}
105104
require.Len(t, items, 2)
106-
require.Equal(t, items[0].Name, path.Join(globalconfigsync.GlobalConfigPath, "enable_resource_metering"))
105+
require.Equal(t, items[0].Name, "/global/config/enable_resource_metering")
107106
require.Equal(t, items[0].Value, "true")
108-
require.Equal(t, items[1].Name, path.Join(globalconfigsync.GlobalConfigPath, "source_id"))
107+
require.Equal(t, items[1].Name, "/global/config/source_id")
109108
require.Equal(t, items[1].Value, "2")
110109
return
111110
}

go.mod

+4-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ require (
7171
github.com/pingcap/errors v0.11.5-0.20221009092201-b66cddb77c32
7272
github.com/pingcap/failpoint v0.0.0-20220423142525-ae43b7f4e5c3
7373
github.com/pingcap/fn v0.0.0-20200306044125-d5540d389059
74-
github.com/pingcap/kvproto v0.0.0-20230131104319-a7c51106dfe7
74+
github.com/pingcap/kvproto v0.0.0-20230201112839-2b853bed8125
7575
github.com/pingcap/log v1.1.1-0.20221116035753-734d527bc87c
7676
github.com/pingcap/sysutil v0.0.0-20220114020952-ea68d2dbf5b4
7777
github.com/pingcap/tidb/parser v0.0.0-20211011031125-9b13dc409c5e
@@ -276,5 +276,8 @@ replace (
276276
// fix potential security issue(CVE-2020-26160) introduced by indirect dependency.
277277
github.com/dgrijalva/jwt-go => github.com/form3tech-oss/jwt-go v3.2.6-0.20210809144907-32ab6a8243d7+incompatible
278278
github.com/pingcap/tidb/parser => ./parser
279+
github.com/tikv/client-go/v2 => github.com/HuSharp/client-go/v2 v2.0.0-20230202021713-c9a6ecd403ab
280+
github.com/tikv/pd => github.com/HuSharp/pd v1.1.0-beta.0.20230202034438-68b5d80b943d
281+
github.com/tikv/pd/client => github.com/HuSharp/pd/client v0.0.0-20230202034438-68b5d80b943d
279282
go.opencensus.io => go.opencensus.io v0.23.1-0.20220331163232-052120675fac
280283
)

go.sum

+8-9
Original file line numberDiff line numberDiff line change
@@ -405,6 +405,12 @@ github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ=
405405
github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
406406
github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM=
407407
github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo=
408+
github.com/HuSharp/client-go/v2 v2.0.0-20230202021713-c9a6ecd403ab h1:uKRGfQyIWCbLomNy6eLPjrVeqj0OSvrb5vYlysuDPJA=
409+
github.com/HuSharp/client-go/v2 v2.0.0-20230202021713-c9a6ecd403ab/go.mod h1:exX/L++dG1l7GZ5h0MXZQb6UEzbjZphDcsTQerGafw4=
410+
github.com/HuSharp/pd v1.1.0-beta.0.20230202034438-68b5d80b943d h1:5TdzvzFzTh3Z4dUDayp2Ga5B6St8okqb5LSP55SLzTE=
411+
github.com/HuSharp/pd v1.1.0-beta.0.20230202034438-68b5d80b943d/go.mod h1:jb9oq6rN4U0U3FZdvqWlpi9rZzFJxiOlvZ3aj5BTpg8=
412+
github.com/HuSharp/pd/client v0.0.0-20230202034438-68b5d80b943d h1:GXXvn8QekeU0hr9tj7M/eP+lpzACMR5nCENwp8PDupo=
413+
github.com/HuSharp/pd/client v0.0.0-20230202034438-68b5d80b943d/go.mod h1:0fdKmj9cafPLsHAeVAcgB50Uj018WGfMC1tgvzWXXQQ=
408414
github.com/Jeffail/gabs/v2 v2.5.1 h1:ANfZYjpMlfTTKebycu4X1AgkVWumFVDYQl7JwOr4mDk=
409415
github.com/Jeffail/gabs/v2 v2.5.1/go.mod h1:xCn81vdHKxFUuWWAaD5jCTQDNPBMh5pPs9IJ+NcziBI=
410416
github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY=
@@ -1143,9 +1149,8 @@ github.com/pingcap/fn v0.0.0-20200306044125-d5540d389059/go.mod h1:fMRU1BA1y+r89
11431149
github.com/pingcap/goleveldb v0.0.0-20191226122134-f82aafb29989 h1:surzm05a8C9dN8dIUmo4Be2+pMRb6f55i+UIYrluu2E=
11441150
github.com/pingcap/goleveldb v0.0.0-20191226122134-f82aafb29989/go.mod h1:O17XtbryoCJhkKGbT62+L2OlrniwqiGLSqrmdHCMzZw=
11451151
github.com/pingcap/kvproto v0.0.0-20191211054548-3c6b38ea5107/go.mod h1:WWLmULLO7l8IOcQG+t+ItJ3fEcrL5FxF0Wu+HrMy26w=
1146-
github.com/pingcap/kvproto v0.0.0-20230119031034-25f1909b7934/go.mod h1:+on3Lfk/fb1lXkud3XvskJumhSIEEgN2TTbMObUlrxE=
1147-
github.com/pingcap/kvproto v0.0.0-20230131104319-a7c51106dfe7 h1:oYUK4V5PMlyIooU/+pPkKrJ3vELwcuuCNyKKlqSQa5c=
1148-
github.com/pingcap/kvproto v0.0.0-20230131104319-a7c51106dfe7/go.mod h1:+on3Lfk/fb1lXkud3XvskJumhSIEEgN2TTbMObUlrxE=
1152+
github.com/pingcap/kvproto v0.0.0-20230201112839-2b853bed8125 h1:ZiCJcEzmmF5xNgt8GIXekd3WQXI/22kzYQnrHi3Fc/4=
1153+
github.com/pingcap/kvproto v0.0.0-20230201112839-2b853bed8125/go.mod h1:+on3Lfk/fb1lXkud3XvskJumhSIEEgN2TTbMObUlrxE=
11491154
github.com/pingcap/log v0.0.0-20191012051959-b742a5d432e9/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8=
11501155
github.com/pingcap/log v0.0.0-20210625125904-98ed8e2eb1c7/go.mod h1:8AanEdAHATuRurdGxZXBz0At+9avep+ub7U1AGYLIMM=
11511156
github.com/pingcap/log v1.1.0/go.mod h1:DWQW5jICDR7UJh4HtxXSM20Churx4CQL0fwL/SoOSA4=
@@ -1308,12 +1313,6 @@ github.com/tiancaiamao/appdash v0.0.0-20181126055449-889f96f722a2 h1:mbAskLJ0oJf
13081313
github.com/tiancaiamao/appdash v0.0.0-20181126055449-889f96f722a2/go.mod h1:2PfKggNGDuadAa0LElHrByyrz4JPZ9fFx6Gs7nx7ZZU=
13091314
github.com/tiancaiamao/gp v0.0.0-20221230034425-4025bc8a4d4a h1:J/YdBZ46WKpXsxsW93SG+q0F8KI+yFrcIDT4c/RNoc4=
13101315
github.com/tiancaiamao/gp v0.0.0-20221230034425-4025bc8a4d4a/go.mod h1:h4xBhSNtOeEosLJ4P7JyKXX7Cabg7AVkWCK5gV2vOrM=
1311-
github.com/tikv/client-go/v2 v2.0.5-0.20230120021435-f89383775234 h1:2BmijiUk1Hcv0z58DVk4ypwaNmgutzLc2YJm0SHPEWE=
1312-
github.com/tikv/client-go/v2 v2.0.5-0.20230120021435-f89383775234/go.mod h1:jc7J2EbNeVvU6eXmB50wAGrTPyJwdi+0ENccMXMFSpw=
1313-
github.com/tikv/pd v1.1.0-beta.0.20230201064005-6ca9a3398f15 h1:ef+kODGby/rmF9fabJzqRM15NcGufkTRftROdy7jvAk=
1314-
github.com/tikv/pd v1.1.0-beta.0.20230201064005-6ca9a3398f15/go.mod h1:UnfZJ+ykNsVbQgo/CZ3NFyHnLJ/pQGlBD0M/WgxFHMQ=
1315-
github.com/tikv/pd/client v0.0.0-20230119115149-5c518d079b93 h1:KK5bx0KLcpYUCnuQ06THPYT6QdAMfvwAtRQ0saVGD7k=
1316-
github.com/tikv/pd/client v0.0.0-20230119115149-5c518d079b93/go.mod h1:NrbwVp9afaCmJjJEwFNtEQWfCChAW1ndnwjteHHS+d0=
13171316
github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144 h1:kl4KhGNsJIbDHS9/4U9yQo1UcPQM0kOMJHn29EoH/Ro=
13181317
github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk=
13191318
github.com/tklauser/go-sysconf v0.3.9/go.mod h1:11DU/5sG7UexIrp/O6g35hrWzu0JxlwQ3LSFUzyeuhs=

store/mockstore/unistore/pd.go

+8-8
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ import (
1818
"context"
1919
"errors"
2020
"math"
21-
"path"
22-
"strings"
2321
"sync"
2422
"sync/atomic"
2523

@@ -50,19 +48,21 @@ func newPDClient(pd *us.MockPD) *pdClient {
5048
}
5149
}
5250

53-
func (c *pdClient) LoadGlobalConfig(ctx context.Context, configPath string) ([]pd.GlobalConfigItem, int64, error) {
54-
ret := make([]pd.GlobalConfigItem, 0)
55-
for k, v := range c.globalConfig {
56-
if strings.HasPrefix(k, configPath) {
57-
ret = append(ret, pd.GlobalConfigItem{Name: k, Value: v})
51+
func (c *pdClient) LoadGlobalConfig(ctx context.Context, names []string, configPath string) ([]pd.GlobalConfigItem, int64, error) {
52+
ret := make([]pd.GlobalConfigItem, len(names))
53+
for i, name := range names {
54+
if r, ok := c.globalConfig["/global/config/"+name]; ok {
55+
ret[i] = pd.GlobalConfigItem{Name: "/global/config/" + name, Value: r, EventType: pdpb.EventType_PUT}
56+
} else {
57+
ret[i] = pd.GlobalConfigItem{Name: "/global/config/" + name, Value: ""}
5858
}
5959
}
6060
return ret, 0, nil
6161
}
6262

6363
func (c *pdClient) StoreGlobalConfig(ctx context.Context, configPath string, items []pd.GlobalConfigItem) error {
6464
for _, item := range items {
65-
c.globalConfig[path.Join(configPath, item.Name)] = item.Value
65+
c.globalConfig["/global/config/"+item.Name] = item.Value
6666
}
6767
return nil
6868
}

store/mockstore/unistore/pd_test.go

+30-6
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,39 @@ func SetUpSuite() *GlobalConfigTestSuite {
3434
return s
3535
}
3636

37-
func TestLoadAndStore(t *testing.T) {
37+
func TestLoad(t *testing.T) {
3838
s := SetUpSuite()
39-
40-
err := s.client.StoreGlobalConfig(context.Background(), "/global/config", []pd.GlobalConfigItem{{Name: "NewObject", Value: "ok"}})
39+
err := s.client.StoreGlobalConfig(context.Background(), "", []pd.GlobalConfigItem{{Name: "LoadOkGlobalConfig", Value: "ok"}})
4140
require.Equal(t, nil, err)
41+
res, _, err := s.client.LoadGlobalConfig(context.Background(), []string{"LoadOkGlobalConfig", "LoadErrGlobalConfig"}, "")
42+
require.Equal(t, err, nil)
43+
for _, j := range res {
44+
println(j.Name)
45+
switch j.Name {
46+
case "/global/config/LoadOkGlobalConfig":
47+
require.Equal(t, "ok", j.Value)
48+
case "/global/config/LoadErrGlobalConfig":
49+
require.Equal(t, "", j.Value)
50+
default:
51+
require.Equal(t, true, false)
52+
}
53+
}
54+
s.TearDownSuite()
55+
}
4256

43-
res, _, err := s.client.LoadGlobalConfig(context.Background(), "/global/config")
44-
require.Equal(t, nil, err)
45-
require.Equal(t, 1, len(res))
57+
func TestStore(t *testing.T) {
58+
s := SetUpSuite()
59+
60+
res, _, err := s.client.LoadGlobalConfig(context.Background(), []string{"NewObject"}, "")
61+
require.Equal(t, err, nil)
62+
require.Equal(t, res[0].Value, "")
63+
64+
err = s.client.StoreGlobalConfig(context.Background(), "", []pd.GlobalConfigItem{{Name: "NewObject", Value: "ok"}})
65+
require.Equal(t, err, nil)
66+
67+
res, _, err = s.client.LoadGlobalConfig(context.Background(), []string{"NewObject"}, "")
68+
require.Equal(t, err, nil)
69+
require.Equal(t, res[0].Value, "ok")
4670

4771
s.TearDownSuite()
4872
}

0 commit comments

Comments
 (0)