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

Update kvproto in dependencies #2729

Merged
merged 8 commits into from
Aug 13, 2020
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
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
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ require (
github.com/pingcap/errcode v0.0.0-20180921232412-a1a7271709d9
github.com/pingcap/errors v0.11.5-0.20200729012136-4e113ddee29e
github.com/pingcap/failpoint v0.0.0-20191029060244-12f4ac2fd11d
github.com/pingcap/kvproto v0.0.0-20200715040832-c3e2e0b163ee
github.com/pingcap/kvproto v0.0.0-20200810113304-6157337686b1
github.com/pingcap/log v0.0.0-20200511115504-543df19646ad
github.com/pingcap/sysutil v0.0.0-20200715082929-4c47bcac246a
github.com/pkg/errors v0.9.1
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -292,8 +292,8 @@ github.com/pingcap/failpoint v0.0.0-20191029060244-12f4ac2fd11d h1:F8vp38kTAckN+
github.com/pingcap/failpoint v0.0.0-20191029060244-12f4ac2fd11d/go.mod h1:DNS3Qg7bEDhU6EXNHF+XSv/PGznQaMJ5FWvctpm6pQI=
github.com/pingcap/kvproto v0.0.0-20191211054548-3c6b38ea5107/go.mod h1:WWLmULLO7l8IOcQG+t+ItJ3fEcrL5FxF0Wu+HrMy26w=
github.com/pingcap/kvproto v0.0.0-20200411081810-b85805c9476c/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI=
github.com/pingcap/kvproto v0.0.0-20200715040832-c3e2e0b163ee h1:DVIvoPsg68XMQje9ivq7l8Iz8sTCBZGrHeaSwg+mwjw=
github.com/pingcap/kvproto v0.0.0-20200715040832-c3e2e0b163ee/go.mod h1:IOdRDPLyda8GX2hE/jO7gqaCV/PNFh8BZQCQZXfIOqI=
github.com/pingcap/kvproto v0.0.0-20200810113304-6157337686b1 h1:hv22UEhdqeIqa5Jx0oeqDQNGHUBSW3LVOx02gqbd5Gg=
github.com/pingcap/kvproto v0.0.0-20200810113304-6157337686b1/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=
Expand Down
2 changes: 1 addition & 1 deletion pkg/mock/mockcluster/mockcluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -617,7 +617,7 @@ func (mc *Cluster) MockRegionInfo(regionID uint64, leaderStoreID uint64,
}
for _, storeID := range learnerStoreIDs {
peer, _ := mc.AllocPeer(storeID)
peer.IsLearner = true
peer.Role = metapb.PeerRole_Learner
region.Peers = append(region.Peers, peer)
}
return core.NewRegionInfo(region, leader)
Expand Down
6 changes: 3 additions & 3 deletions server/api/trend_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ func (s *testTrendSuite) TestTrend(c *C) {
c.Assert(err, IsNil)
c.Assert(op, NotNil)
newPeerID := op.Step(0).(operator.AddLearner).PeerID
region5 = region5.Clone(core.WithAddPeer(&metapb.Peer{Id: newPeerID, StoreId: 3, IsLearner: true}), core.WithIncConfVer())
region5 = region5.Clone(core.WithAddPeer(&metapb.Peer{Id: newPeerID, StoreId: 3, Role: metapb.PeerRole_Learner}), core.WithIncConfVer())
mustRegionHeartbeat(c, svr, region5)
region5 = region5.Clone(core.WithPromoteLearner(newPeerID), core.WithRemoveStorePeer(2), core.WithIncConfVer())
mustRegionHeartbeat(c, svr, region5)
Expand All @@ -68,7 +68,7 @@ func (s *testTrendSuite) TestTrend(c *C) {
c.Assert(err, IsNil)
c.Assert(op, NotNil)
newPeerID = op.Step(0).(operator.AddLearner).PeerID
region6 = region6.Clone(core.WithAddPeer(&metapb.Peer{Id: newPeerID, StoreId: 3, IsLearner: true}), core.WithIncConfVer())
region6 = region6.Clone(core.WithAddPeer(&metapb.Peer{Id: newPeerID, StoreId: 3, Role: metapb.PeerRole_Learner}), core.WithIncConfVer())
mustRegionHeartbeat(c, svr, region6)
region6 = region6.Clone(core.WithPromoteLearner(newPeerID), core.WithLeader(region6.GetStorePeer(2)), core.WithRemoveStorePeer(1), core.WithIncConfVer())
mustRegionHeartbeat(c, svr, region6)
Expand Down Expand Up @@ -111,7 +111,7 @@ func (s *testTrendSuite) newRegionInfo(id uint64, startKey, endKey string, confV
peers = append(peers, p)
}
for _, id := range learners {
p := &metapb.Peer{Id: 10 + id, StoreId: id, IsLearner: true}
p := &metapb.Peer{Id: 10 + id, StoreId: id, Role: metapb.PeerRole_Learner}
peers = append(peers, p)
}
return core.NewRegionInfo(
Expand Down
2 changes: 1 addition & 1 deletion server/cluster/coordinator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ func (s *testCoordinatorSuite) TestCheckRegion(c *C) {
s.checkRegion(c, tc, co, 1, false, 0)

r := tc.GetRegion(1)
p := &metapb.Peer{Id: 1, StoreId: 1, IsLearner: true}
p := &metapb.Peer{Id: 1, StoreId: 1, Role: metapb.PeerRole_Learner}
r = r.Clone(
core.WithAddPeer(p),
core.WithPendingPeers(append(r.GetPendingPeers(), p)),
Expand Down
23 changes: 23 additions & 0 deletions server/core/peer.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// Copyright 2020 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 core

import (
"github.com/pingcap/kvproto/pkg/metapb"
)

// IsLearner judges whether the Peer's Role is Learner.
func IsLearner(peer *metapb.Peer) bool {
return peer.GetRole() == metapb.PeerRole_Learner
}
10 changes: 5 additions & 5 deletions server/core/region.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ func classifyVoterAndLearner(region *RegionInfo) {
learners := make([]*metapb.Peer, 0, 1)
voters := make([]*metapb.Peer, 0, len(region.meta.Peers))
for _, p := range region.meta.Peers {
if p.IsLearner {
if IsLearner(p) {
learners = append(learners, p)
} else {
voters = append(voters, p)
Expand Down Expand Up @@ -182,7 +182,7 @@ func (r *RegionInfo) GetDownPeer(peerID uint64) *metapb.Peer {
// GetDownVoter returns the down voter with specified peer id.
func (r *RegionInfo) GetDownVoter(peerID uint64) *metapb.Peer {
for _, down := range r.downPeers {
if down.GetPeer().GetId() == peerID && !down.GetPeer().IsLearner {
if down.GetPeer().GetId() == peerID && !IsLearner(down.GetPeer()) {
return down.GetPeer()
}
}
Expand All @@ -192,7 +192,7 @@ func (r *RegionInfo) GetDownVoter(peerID uint64) *metapb.Peer {
// GetDownLearner returns the down learner with soecified peer id.
func (r *RegionInfo) GetDownLearner(peerID uint64) *metapb.Peer {
for _, down := range r.downPeers {
if down.GetPeer().GetId() == peerID && down.GetPeer().IsLearner {
if down.GetPeer().GetId() == peerID && IsLearner(down.GetPeer()) {
return down.GetPeer()
}
}
Expand All @@ -212,7 +212,7 @@ func (r *RegionInfo) GetPendingPeer(peerID uint64) *metapb.Peer {
// GetPendingVoter returns the pending voter with specified peer id.
func (r *RegionInfo) GetPendingVoter(peerID uint64) *metapb.Peer {
for _, peer := range r.pendingPeers {
if peer.GetId() == peerID && !peer.IsLearner {
if peer.GetId() == peerID && !IsLearner(peer) {
return peer
}
}
Expand All @@ -222,7 +222,7 @@ func (r *RegionInfo) GetPendingVoter(peerID uint64) *metapb.Peer {
// GetPendingLearner returns the pending learner peer with specified peer id.
func (r *RegionInfo) GetPendingLearner(peerID uint64) *metapb.Peer {
for _, peer := range r.pendingPeers {
if peer.GetId() == peerID && peer.IsLearner {
if peer.GetId() == peerID && IsLearner(peer) {
return peer
}
}
Expand Down
6 changes: 3 additions & 3 deletions server/core/region_option.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ func WithLearners(learners []*metapb.Peer) RegionCreateOption {
for i := range peers {
for _, l := range learners {
if peers[i].GetId() == l.GetId() {
peers[i] = &metapb.Peer{Id: l.GetId(), StoreId: l.GetStoreId(), IsLearner: true}
peers[i] = &metapb.Peer{Id: l.GetId(), StoreId: l.GetStoreId(), Role: metapb.PeerRole_Learner}
break
}
}
Expand Down Expand Up @@ -236,7 +236,7 @@ func SetReplicationStatus(status *replication_modepb.RegionReplicationStatus) Re
func WithAddPeer(peer *metapb.Peer) RegionCreateOption {
return func(region *RegionInfo) {
region.meta.Peers = append(region.meta.Peers, peer)
if peer.IsLearner {
if IsLearner(peer) {
region.learners = append(region.learners, peer)
} else {
region.voters = append(region.voters, peer)
Expand All @@ -249,7 +249,7 @@ func WithPromoteLearner(peerID uint64) RegionCreateOption {
return func(region *RegionInfo) {
for _, p := range region.GetPeers() {
if p.GetId() == peerID {
p.IsLearner = false
p.Role = metapb.PeerRole_Voter
}
}
}
Expand Down
6 changes: 3 additions & 3 deletions server/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -539,7 +539,7 @@ func (h *Handler) AddTransferPeerOperator(regionID uint64, fromStoreID, toStoreI
return errcode.Op("operator.add").AddTo(core.StoreTombstonedErr{StoreID: toStoreID})
}

newPeer := &metapb.Peer{StoreId: toStoreID, IsLearner: oldPeer.GetIsLearner()}
newPeer := &metapb.Peer{StoreId: toStoreID, Role: oldPeer.GetRole()}
op, err := operator.CreateMovePeerOperator("admin-move-peer", c, region, operator.OpAdmin, fromStoreID, newPeer)
if err != nil {
log.Debug("fail to create move peer operator", zap.Error(err))
Expand Down Expand Up @@ -605,8 +605,8 @@ func (h *Handler) AddAddLearnerOperator(regionID uint64, toStoreID uint64) error
}

newPeer := &metapb.Peer{
StoreId: toStoreID,
IsLearner: true,
StoreId: toStoreID,
Role: metapb.PeerRole_Learner,
}

op, err := operator.CreateAddPeerOperator("admin-add-learner", c, region, newPeer, operator.OpAdmin)
Expand Down
2 changes: 1 addition & 1 deletion server/heartbeat_stream_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ func (s *testHeartbeatStreamSuite) TestActivity(c *C) {
bootstrapReq := &pdpb.BootstrapRequest{
Header: testutil.NewRequestHeader(s.svr.clusterID),
Store: &metapb.Store{Id: 1, Address: "127.0.0.1:0"},
Region: &metapb.Region{Id: 2, Peers: []*metapb.Peer{{Id: 3, StoreId: 1, IsLearner: false}}},
Region: &metapb.Region{Id: 2, Peers: []*metapb.Peer{{Id: 3, StoreId: 1, Role: metapb.PeerRole_Voter}}},
}
_, err = s.svr.bootstrapCluster(bootstrapReq)
c.Assert(err, IsNil)
Expand Down
2 changes: 1 addition & 1 deletion server/schedule/checker/learner_checker_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func (s *testLearnerCheckerSuite) TestPromoteLearner(c *C) {
Peers: []*metapb.Peer{
{Id: 101, StoreId: 1},
{Id: 102, StoreId: 2},
{Id: 103, StoreId: 3, IsLearner: true},
{Id: 103, StoreId: 3, Role: metapb.PeerRole_Learner},
},
}, &metapb.Peer{Id: 101, StoreId: 1})
op := lc.Check(region)
Expand Down
10 changes: 5 additions & 5 deletions server/schedule/checker/rule_checker.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ func (c *RuleChecker) addRulePeer(region *core.RegionInfo, rf *placement.RuleFit
checkerCounter.WithLabelValues("rule_checker", "no-store-add").Inc()
return nil, errors.New("no store to add peer")
}
peer := &metapb.Peer{StoreId: store, IsLearner: rf.Rule.Role == placement.Learner}
peer := &metapb.Peer{StoreId: store, Role: rf.Rule.Role.MetaPeerRole()}
return operator.CreateAddPeerOperator("add-rule-peer", c.cluster, region, peer, operator.OpReplica)
}

Expand All @@ -128,12 +128,12 @@ func (c *RuleChecker) replaceRulePeer(region *core.RegionInfo, rf *placement.Rul
checkerCounter.WithLabelValues("rule_checker", "no-store-replace").Inc()
return nil, errors.New("no store to replace peer")
}
newPeer := &metapb.Peer{StoreId: store, IsLearner: rf.Rule.Role == placement.Learner}
newPeer := &metapb.Peer{StoreId: store, Role: rf.Rule.Role.MetaPeerRole()}
return operator.CreateMovePeerOperator("replace-rule-"+status+"-peer", c.cluster, region, operator.OpReplica, peer.StoreId, newPeer)
}

func (c *RuleChecker) fixLooseMatchPeer(region *core.RegionInfo, fit *placement.RegionFit, rf *placement.RuleFit, peer *metapb.Peer) (*operator.Operator, error) {
if peer.IsLearner && rf.Rule.Role != placement.Learner {
if core.IsLearner(peer) && rf.Rule.Role != placement.Learner {
checkerCounter.WithLabelValues("rule_checker", "fix-peer-role").Inc()
return operator.CreatePromoteLearnerOperator("fix-peer-role", c.cluster, region, peer)
}
Expand All @@ -151,7 +151,7 @@ func (c *RuleChecker) fixLooseMatchPeer(region *core.RegionInfo, fit *placement.
}

func (c *RuleChecker) allowLeader(fit *placement.RegionFit, peer *metapb.Peer) bool {
if peer.GetIsLearner() {
if core.IsLearner(peer) {
return false
}
s := c.cluster.GetStore(peer.GetStoreId())
Expand Down Expand Up @@ -188,7 +188,7 @@ func (c *RuleChecker) fixBetterLocation(region *core.RegionInfo, rf *placement.R
return nil, nil
}
checkerCounter.WithLabelValues("rule_checker", "move-to-better-location").Inc()
newPeer := &metapb.Peer{StoreId: newStore, IsLearner: rf.Rule.Role == placement.Learner}
newPeer := &metapb.Peer{StoreId: newStore, Role: rf.Rule.Role.MetaPeerRole()}
return operator.CreateMovePeerOperator("move-to-better-location", c.cluster, region, operator.OpReplica, oldStore, newPeer)
}

Expand Down
4 changes: 2 additions & 2 deletions server/schedule/checker/rule_checker_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ func (s *testRuleCheckerSuite) TestFixRole(c *C) {
s.cluster.AddLeaderRegionWithRange(1, "", "", 2, 1, 3)
r := s.cluster.GetRegion(1)
p := r.GetStorePeer(1)
p.IsLearner = true
p.Role = metapb.PeerRole_Learner
r = r.Clone(core.WithLearners([]*metapb.Peer{p}))
op := s.rc.Check(r)
c.Assert(op, NotNil)
Expand Down Expand Up @@ -288,7 +288,7 @@ func (s *testRuleCheckerSuite) TestIssue2419(c *C) {
s.cluster.SetStoreOffline(3)
s.cluster.AddLeaderRegionWithRange(1, "", "", 1, 2, 3)
r := s.cluster.GetRegion(1)
r = r.Clone(core.WithAddPeer(&metapb.Peer{Id: 5, StoreId: 4, IsLearner: true}))
r = r.Clone(core.WithAddPeer(&metapb.Peer{Id: 5, StoreId: 4, Role: metapb.PeerRole_Learner}))
op := s.rc.Check(r)
c.Assert(op, NotNil)
c.Assert(op.Desc(), Equals, "remove-orphan-peer")
Expand Down
24 changes: 12 additions & 12 deletions server/schedule/operator/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ func (b *Builder) PromoteLearner(storeID uint64) *Builder {
p := b.targetPeers.Get(storeID)
if p == nil {
b.err = errors.Errorf("cannot promote peer %d: not found", storeID)
} else if !p.GetIsLearner() {
} else if !core.IsLearner(p) {
b.err = errors.Errorf("cannot promote peer %d: not learner", storeID)
} else {
b.targetPeers.Set(&metapb.Peer{Id: p.GetId(), StoreId: p.GetStoreId()})
Expand All @@ -146,7 +146,7 @@ func (b *Builder) SetLeader(storeID uint64) *Builder {
p := b.targetPeers.Get(storeID)
if p == nil {
b.err = errors.Errorf("cannot transfer leader to %d: not found", storeID)
} else if p.GetIsLearner() {
} else if core.IsLearner(p) {
b.err = errors.Errorf("cannot transfer leader to %d: not voter", storeID)
} else {
b.targetLeader = storeID
Expand Down Expand Up @@ -205,7 +205,7 @@ func (b *Builder) Build(kind OpKind) (*Operator, error) {
func (b *Builder) prepareBuild() (string, error) {
var voterCount int
for _, p := range b.targetPeers.m {
if !p.GetIsLearner() {
if !core.IsLearner(p) {
voterCount++
}
}
Expand All @@ -218,17 +218,17 @@ func (b *Builder) prepareBuild() (string, error) {
for _, o := range b.originPeers.m {
n := b.targetPeers.Get(o.GetStoreId())
// no peer in targets, or target is learner while old one is voter.
if n == nil || (n.GetIsLearner() && !o.GetIsLearner()) {
if n == nil || (core.IsLearner(n) && !core.IsLearner(o)) {
b.toRemove.Set(o)
continue
}
if o.GetIsLearner() && !n.GetIsLearner() {
if core.IsLearner(o) && !core.IsLearner(n) {
b.toPromote.Set(n)
}
}
for _, n := range b.targetPeers.m {
o := b.originPeers.Get(n.GetStoreId())
if o == nil || (n.GetIsLearner() && !o.GetIsLearner()) {
if o == nil || (core.IsLearner(n) && !core.IsLearner(o)) {
// old peer not exists, or target is learner while old one is voter.
if n.GetId() == 0 {
// Allocate peer ID if need.
Expand Down Expand Up @@ -322,7 +322,7 @@ func (b *Builder) execAddPeer(p *metapb.Peer) {
} else {
b.steps = append(b.steps, AddLearner{ToStore: p.GetStoreId(), PeerID: p.GetId()})
}
if !p.GetIsLearner() {
if !core.IsLearner(p) {
b.steps = append(b.steps, PromoteLearner{ToStore: p.GetStoreId(), PeerID: p.GetId()})
}
b.currentPeers.Set(p)
Expand All @@ -344,7 +344,7 @@ func (b *Builder) allowLeader(peer *metapb.Peer) bool {
if peer.GetStoreId() == b.currentLeader {
return true
}
if peer.GetIsLearner() {
if core.IsLearner(peer) {
return false
}
store := b.cluster.GetStore(peer.GetStoreId())
Expand Down Expand Up @@ -417,7 +417,7 @@ func (b *Builder) planReplace() stepPlan {
add := b.toAdd.Get(i)
for _, j := range b.toRemove.IDs() {
remove := b.toRemove.Get(j)
if remove.GetIsLearner() == add.GetIsLearner() {
if core.IsLearner(remove) == core.IsLearner(add) {
best = b.planReplaceLeaders(best, stepPlan{add: add, remove: remove})
}
}
Expand All @@ -426,9 +426,9 @@ func (b *Builder) planReplace() stepPlan {
for _, i := range b.toPromote.IDs() {
promote := b.toPromote.Get(i)
for _, j := range b.toAdd.IDs() {
if add := b.toAdd.Get(j); add.GetIsLearner() {
if add := b.toAdd.Get(j); core.IsLearner(add) {
for _, k := range b.toRemove.IDs() {
if remove := b.toRemove.Get(k); !remove.GetIsLearner() && j != k {
if remove := b.toRemove.Get(k); !core.IsLearner(remove) && j != k {
best = b.planReplaceLeaders(best, stepPlan{promote: promote, add: add, remove: remove})
}
}
Expand Down Expand Up @@ -597,7 +597,7 @@ func (b *Builder) preferTargetLeader(p stepPlan) int {

// It is better to add target leader as early as possible.
func (b *Builder) preferAddOrPromoteTargetLeader(p stepPlan) int {
addTarget := p.add != nil && !p.add.GetIsLearner() && p.add.GetStoreId() == b.targetLeader
addTarget := p.add != nil && !core.IsLearner(p.add) && p.add.GetStoreId() == b.targetLeader
promoteTarget := p.promote != nil && p.promote.GetStoreId() == b.targetLeader
return b2i(addTarget || promoteTarget)
}
Expand Down
Loading