From b4a5ea590b688860549fa188ed58dd415e7dbf09 Mon Sep 17 00:00:00 2001 From: lzmhhh123 Date: Thu, 21 May 2020 15:12:05 +0800 Subject: [PATCH 1/2] br: fix the recent pd client --- go.mod | 4 ++-- go.sum | 7 +++++++ tests/br_key_locked/codec.go | 30 +++++++++++++++--------------- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/go.mod b/go.mod index 18a73b993..baab562fc 100644 --- a/go.mod +++ b/go.mod @@ -14,10 +14,10 @@ require ( github.com/pingcap/check v0.0.0-20200212061837-5e12011dc712 github.com/pingcap/errors v0.11.5-0.20190809092503-95897b64e011 github.com/pingcap/failpoint v0.0.0-20200506114213-c17f16071c53 - github.com/pingcap/kvproto v0.0.0-20200509065137-6a4d5c264a8b + github.com/pingcap/kvproto v0.0.0-20200518112156-d4aeb467de29 github.com/pingcap/log v0.0.0-20200117041106-d28c14d3b1cd github.com/pingcap/parser v0.0.0-20200507022230-f3bf29096657 - github.com/pingcap/pd/v4 v4.0.0-rc.1.0.20200508085806-feb738d721fb + github.com/pingcap/pd/v4 v4.0.0-rc.2.0.20200520083007-2c251bd8f181 github.com/pingcap/tidb v1.1.0-beta.0.20200509133407-a9dc72cf2558 github.com/pingcap/tidb-tools v4.0.0-rc.1.0.20200514040632-f76b3e428e19+incompatible github.com/pingcap/tipb v0.0.0-20200417094153-7316d94df1ee diff --git a/go.sum b/go.sum index 519d82d69..05690a5cf 100644 --- a/go.sum +++ b/go.sum @@ -63,6 +63,7 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/blacktear23/go-proxyprotocol v0.0.0-20180807104634-af7a81e8dd0d h1:rQlvB2AYWme2bIB18r/SipGiMEVJYE9U0z+MGoU/LtQ= github.com/blacktear23/go-proxyprotocol v0.0.0-20180807104634-af7a81e8dd0d/go.mod h1:VKt7CNAQxpFpSDz3sXyj9hY/GbVsQCr0sB3w59nE7lU= +github.com/cenkalti/backoff/v4 v4.0.2/go.mod h1:eEew/i+1Q6OrCDZh3WiXYv3+nJwBASZ8Bog/87DQnVg= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= @@ -413,6 +414,7 @@ github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d h1:U+PMnTlV2tu7RuMK5e github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d/go.mod h1:lXfE4PvvTW5xOjO6Mba8zDPyw8M93B6AQ7frTGnMlA8= github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200407064406-b2b8ad403d01/go.mod h1:77fCh8d3oKzC5ceOJWeZXAS/mLzVgdZ7rKniwmOyFuo= github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200424032813-662fb05948e7/go.mod h1:DwotQY91ds7eiwnY6QrQX9t5iimDtsJVIjI9tZYMaUM= +github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200514075710-eecc9a4525b5/go.mod h1:8q+yDx0STBPri8xS4A2duS1dAf+xO0cMtjwe0t6MWJk= github.com/pingcap/br v0.0.0-20200426093517-dd11ae28b885/go.mod h1:4w3meMnk7HDNpNgjuRAxavruTeKJvUiXxoEWTjzXPnA= github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8 h1:USx2/E1bX46VG32FIw034Au6seQ2fY9NEILmNh/UlQg= github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8/go.mod h1:B1+S9LNcuMyLH/4HMTViQOJevkGiik3wW2AN9zb2fNQ= @@ -440,6 +442,7 @@ github.com/pingcap/goleveldb v0.0.0-20191226122134-f82aafb29989 h1:surzm05a8C9dN 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-20200214064158-62d31900d88e/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI= +github.com/pingcap/kvproto v0.0.0-20200411081810-b85805c9476c/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI= github.com/pingcap/kvproto v0.0.0-20200417092353-efbe03bcffbd/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI= github.com/pingcap/kvproto v0.0.0-20200420075417-e0c6e8842f22/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI= github.com/pingcap/kvproto v0.0.0-20200423020121-038e31959c2a h1:FtuXja79nBFAeg9LxF9+9EzoJXi+j9pCReARPOePiGs= @@ -447,6 +450,8 @@ github.com/pingcap/kvproto v0.0.0-20200423020121-038e31959c2a/go.mod h1:IOdRDPLy github.com/pingcap/kvproto v0.0.0-20200424032552-6650270c39c3/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI= github.com/pingcap/kvproto v0.0.0-20200509065137-6a4d5c264a8b h1:lzOE8Z3TnbgpK8d1h4Jze/SKJrQ7gHgLeUVy0vi0l6o= github.com/pingcap/kvproto v0.0.0-20200509065137-6a4d5c264a8b/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI= +github.com/pingcap/kvproto v0.0.0-20200518112156-d4aeb467de29 h1:NpW1OuYrIl+IQrSsVbtyHpHpazmSCHy+ysrOixY0xY4= +github.com/pingcap/kvproto v0.0.0-20200518112156-d4aeb467de29/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI= github.com/pingcap/log v0.0.0-20191012051959-b742a5d432e9 h1:AJD9pZYm72vMgPcQDww9rkZ1DnWfl0pXV3BOWlkYIjA= github.com/pingcap/log v0.0.0-20191012051959-b742a5d432e9/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8= github.com/pingcap/log v0.0.0-20200117041106-d28c14d3b1cd h1:CV3VsP3Z02MVtdpTMfEgRJ4T9NGgGTxdHpJerent7rM= @@ -459,6 +464,8 @@ github.com/pingcap/pd/v4 v4.0.0-rc.1.0.20200422143320-428acd53eba2 h1:JTzYYukREv github.com/pingcap/pd/v4 v4.0.0-rc.1.0.20200422143320-428acd53eba2/go.mod h1:s+utZtXDznOiL24VK0qGmtoHjjXNsscJx3m1n8cC56s= github.com/pingcap/pd/v4 v4.0.0-rc.1.0.20200508085806-feb738d721fb h1:/9zzZH7sbMJcplGqVHUN3pqt2YUqclImLqRpyMklURc= github.com/pingcap/pd/v4 v4.0.0-rc.1.0.20200508085806-feb738d721fb/go.mod h1:lEf22fUhISqUo2/TCJL7fTfFgG+VXjOfDCd2s8q0BRU= +github.com/pingcap/pd/v4 v4.0.0-rc.2.0.20200520083007-2c251bd8f181 h1:FM+PzdoR3fmWAJx3ug+p5aOgs5aZYwFkoDL7Potdsz0= +github.com/pingcap/pd/v4 v4.0.0-rc.2.0.20200520083007-2c251bd8f181/go.mod h1:q4HTx/bA8aKBa4S7L+SQKHvjRPXCRV0tA0yRw0qkZSA= github.com/pingcap/sysutil v0.0.0-20200206130906-2bfa6dc40bcd/go.mod h1:EB/852NMQ+aRKioCpToQ94Wl7fktV+FNnxf3CX/TTXI= github.com/pingcap/sysutil v0.0.0-20200408114249-ed3bd6f7fdb1 h1:PI8YpTl45F8ilNkrPtT4IdbcZB1SCEa+gK/U5GJYl3E= github.com/pingcap/sysutil v0.0.0-20200408114249-ed3bd6f7fdb1/go.mod h1:EB/852NMQ+aRKioCpToQ94Wl7fktV+FNnxf3CX/TTXI= diff --git a/tests/br_key_locked/codec.go b/tests/br_key_locked/codec.go index 39ff110e5..16360cb32 100644 --- a/tests/br_key_locked/codec.go +++ b/tests/br_key_locked/codec.go @@ -30,23 +30,23 @@ type codecPDClient struct { // GetRegion encodes the key before send requests to pd-server and decodes the // returned StartKey && EndKey from pd-server. -func (c *codecPDClient) GetRegion(ctx context.Context, key []byte) (*metapb.Region, *metapb.Peer, error) { +func (c *codecPDClient) GetRegion(ctx context.Context, key []byte) (*pd.Region, error) { encodedKey := codec.EncodeBytes(nil, key) - region, peer, err := c.Client.GetRegion(ctx, encodedKey) - return processRegionResult(region, peer, err) + region, err := c.Client.GetRegion(ctx, encodedKey) + return processRegionResult(region, err) } -func (c *codecPDClient) GetPrevRegion(ctx context.Context, key []byte) (*metapb.Region, *metapb.Peer, error) { +func (c *codecPDClient) GetPrevRegion(ctx context.Context, key []byte) (*pd.Region, error) { encodedKey := codec.EncodeBytes(nil, key) - region, peer, err := c.Client.GetPrevRegion(ctx, encodedKey) - return processRegionResult(region, peer, err) + region, err := c.Client.GetPrevRegion(ctx, encodedKey) + return processRegionResult(region, err) } // GetRegionByID encodes the key before send requests to pd-server and decodes the // returned StartKey && EndKey from pd-server. -func (c *codecPDClient) GetRegionByID(ctx context.Context, regionID uint64) (*metapb.Region, *metapb.Peer, error) { - region, peer, err := c.Client.GetRegionByID(ctx, regionID) - return processRegionResult(region, peer, err) +func (c *codecPDClient) GetRegionByID(ctx context.Context, regionID uint64) (*pd.Region, error) { + region, err := c.Client.GetRegionByID(ctx, regionID) + return processRegionResult(region, err) } func (c *codecPDClient) ScanRegions( @@ -75,18 +75,18 @@ func (c *codecPDClient) ScanRegions( return regions, peers, nil } -func processRegionResult(region *metapb.Region, peer *metapb.Peer, err error) (*metapb.Region, *metapb.Peer, error) { +func processRegionResult(region *pd.Region, err error) (*pd.Region, error) { if err != nil { - return nil, nil, errors.Trace(err) + return nil, errors.Trace(err) } if region == nil { - return nil, nil, nil + return nil, nil } - err = decodeRegionMetaKey(region) + err = decodeRegionMetaKey(region.Meta) if err != nil { - return nil, nil, errors.Trace(err) + return nil, errors.Trace(err) } - return region, peer, nil + return region, nil } func decodeRegionMetaKey(r *metapb.Region) error { From 6543085da3e4e94e7d16faa9ccaa0d698998397b Mon Sep 17 00:00:00 2001 From: lzmhhh123 Date: Thu, 21 May 2020 15:17:39 +0800 Subject: [PATCH 2/2] fix --- pkg/backup/client.go | 8 ++++---- pkg/restore/split_client.go | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pkg/backup/client.go b/pkg/backup/client.go index 8012ac7b2..b5777757e 100644 --- a/pkg/backup/client.go +++ b/pkg/backup/client.go @@ -514,16 +514,16 @@ func (bc *Client) findRegionLeader( key = codec.EncodeBytes([]byte{}, key) for i := 0; i < 5; i++ { // better backoff. - _, leader, err := bc.mgr.GetPDClient().GetRegion(ctx, key) + region, err := bc.mgr.GetPDClient().GetRegion(ctx, key) if err != nil { log.Error("find leader failed", zap.Error(err)) time.Sleep(time.Millisecond * time.Duration(100*i)) continue } - if leader != nil { + if region.Leader != nil { log.Info("find leader", - zap.Reflect("Leader", leader), zap.Binary("Key", key)) - return leader, nil + zap.Reflect("Leader", region.Leader), zap.Binary("Key", key)) + return region.Leader, nil } log.Warn("no region found", zap.Binary("Key", key)) time.Sleep(time.Millisecond * time.Duration(100*i)) diff --git a/pkg/restore/split_client.go b/pkg/restore/split_client.go index 84de58214..4dca78209 100755 --- a/pkg/restore/split_client.go +++ b/pkg/restore/split_client.go @@ -100,7 +100,7 @@ func (c *pdClient) GetStore(ctx context.Context, storeID uint64) (*metapb.Store, } func (c *pdClient) GetRegion(ctx context.Context, key []byte) (*RegionInfo, error) { - region, leader, err := c.client.GetRegion(ctx, key) + region, err := c.client.GetRegion(ctx, key) if err != nil { return nil, err } @@ -108,13 +108,13 @@ func (c *pdClient) GetRegion(ctx context.Context, key []byte) (*RegionInfo, erro return nil, nil } return &RegionInfo{ - Region: region, - Leader: leader, + Region: region.Meta, + Leader: region.Leader, }, nil } func (c *pdClient) GetRegionByID(ctx context.Context, regionID uint64) (*RegionInfo, error) { - region, leader, err := c.client.GetRegionByID(ctx, regionID) + region, err := c.client.GetRegionByID(ctx, regionID) if err != nil { return nil, err } @@ -122,8 +122,8 @@ func (c *pdClient) GetRegionByID(ctx context.Context, regionID uint64) (*RegionI return nil, nil } return &RegionInfo{ - Region: region, - Leader: leader, + Region: region.Meta, + Leader: region.Leader, }, nil }