From 1bcaa9f4a1ac0694779634f3fdaeddbe9a8a6b02 Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Sun, 30 Aug 2015 18:33:18 -0700 Subject: [PATCH] etcdserver: ignore confChangeUpdateNode in getIDs --- etcdserver/raft.go | 2 ++ etcdserver/raft_test.go | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/etcdserver/raft.go b/etcdserver/raft.go index ddac710a2..cfe69c3f6 100644 --- a/etcdserver/raft.go +++ b/etcdserver/raft.go @@ -382,6 +382,8 @@ func getIDs(snap *raftpb.Snapshot, ents []raftpb.Entry) []uint64 { ids[cc.NodeID] = true case raftpb.ConfChangeRemoveNode: delete(ids, cc.NodeID) + case raftpb.ConfChangeUpdateNode: + // do nothing default: plog.Panicf("ConfChange Type should be either ConfChangeAddNode or ConfChangeRemoveNode!") } diff --git a/etcdserver/raft_test.go b/etcdserver/raft_test.go index 6d9b45d3d..7cce36870 100644 --- a/etcdserver/raft_test.go +++ b/etcdserver/raft_test.go @@ -32,6 +32,8 @@ func TestGetIDs(t *testing.T) { removecc := &raftpb.ConfChange{Type: raftpb.ConfChangeRemoveNode, NodeID: 2} removeEntry := raftpb.Entry{Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(removecc)} normalEntry := raftpb.Entry{Type: raftpb.EntryNormal} + updatecc := &raftpb.ConfChange{Type: raftpb.ConfChangeUpdateNode, NodeID: 2} + updateEntry := raftpb.Entry{Type: raftpb.EntryConfChange, Data: pbutil.MustMarshal(updatecc)} tests := []struct { confState *raftpb.ConfState @@ -48,6 +50,8 @@ func TestGetIDs(t *testing.T) { []raftpb.Entry{addEntry, removeEntry}, []uint64{1}}, {&raftpb.ConfState{Nodes: []uint64{1}}, []raftpb.Entry{addEntry, normalEntry}, []uint64{1, 2}}, + {&raftpb.ConfState{Nodes: []uint64{1}}, + []raftpb.Entry{addEntry, normalEntry, updateEntry}, []uint64{1, 2}}, {&raftpb.ConfState{Nodes: []uint64{1}}, []raftpb.Entry{addEntry, removeEntry, normalEntry}, []uint64{1}}, }