...
1# Run a V2 membership change that adds a single voter in auto mode, which means
2# that joint consensus is not used but a direct transition into the new config
3# takes place.
4
5# Bootstrap n1.
6add-nodes 1 voters=(1) index=2
7----
8INFO 1 switched to configuration voters=(1)
9INFO 1 became follower at term 0
10INFO newRaft 1 [peers: [1], term: 0, commit: 2, applied: 2, lastindex: 2, lastterm: 1]
11
12campaign 1
13----
14INFO 1 is starting a new election at term 0
15INFO 1 became candidate at term 1
16INFO 1 received MsgVoteResp from 1 at term 1
17INFO 1 became leader at term 1
18
19# Add v2 (with an auto transition).
20propose-conf-change 1
21v2
22----
23ok
24
25# Pull n2 out of thin air.
26add-nodes 1
27----
28INFO 2 switched to configuration voters=()
29INFO 2 became follower at term 0
30INFO newRaft 2 [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
31
32# n1 commits the conf change using itself as commit quorum, immediately transitions into
33# the final config, and catches up n2.
34stabilize
35----
36> 1 handling Ready
37 Ready MustSync=true:
38 Lead:1 State:StateLeader
39 HardState Term:1 Vote:1 Commit:4
40 Entries:
41 1/3 EntryNormal ""
42 1/4 EntryConfChangeV2 v2
43 CommittedEntries:
44 1/3 EntryNormal ""
45 1/4 EntryConfChangeV2 v2
46 INFO 1 switched to configuration voters=(1 2)
47> 1 handling Ready
48 Ready MustSync=false:
49 Messages:
50 1->2 MsgApp Term:1 Log:1/3 Commit:4 Entries:[1/4 EntryConfChangeV2 v2]
51> 2 receiving messages
52 1->2 MsgApp Term:1 Log:1/3 Commit:4 Entries:[1/4 EntryConfChangeV2 v2]
53 INFO 2 [term: 0] received a MsgApp message with higher term from 1 [term: 1]
54 INFO 2 became follower at term 1
55 DEBUG 2 [logterm: 0, index: 3] rejected MsgApp [logterm: 1, index: 3] from 1
56> 2 handling Ready
57 Ready MustSync=true:
58 Lead:1 State:StateFollower
59 HardState Term:1 Commit:0
60 Messages:
61 2->1 MsgAppResp Term:1 Log:0/3 Rejected (Hint: 0)
62> 1 receiving messages
63 2->1 MsgAppResp Term:1 Log:0/3 Rejected (Hint: 0)
64 DEBUG 1 received MsgAppResp(rejected, hint: (index 0, term 0)) from 2 for index 3
65 DEBUG 1 decreased progress of 2 to [StateProbe match=0 next=1]
66 DEBUG 1 [firstindex: 3, commit: 4] sent snapshot[index: 4, term: 1] to 2 [StateProbe match=0 next=1]
67 DEBUG 1 paused sending replication messages to 2 [StateSnapshot match=0 next=1 paused pendingSnap=4]
68> 1 handling Ready
69 Ready MustSync=false:
70 Messages:
71 1->2 MsgSnap Term:1 Log:0/0 Snapshot: Index:4 Term:1 ConfState:Voters:[1 2] VotersOutgoing:[] Learners:[] LearnersNext:[] AutoLeave:false
72> 2 receiving messages
73 1->2 MsgSnap Term:1 Log:0/0 Snapshot: Index:4 Term:1 ConfState:Voters:[1 2] VotersOutgoing:[] Learners:[] LearnersNext:[] AutoLeave:false
74 INFO log [committed=0, applied=0, unstable.offset=1, len(unstable.Entries)=0] starts to restore snapshot [index: 4, term: 1]
75 INFO 2 switched to configuration voters=(1 2)
76 INFO 2 [commit: 4, lastindex: 4, lastterm: 1] restored snapshot [index: 4, term: 1]
77 INFO 2 [commit: 4] restored snapshot [index: 4, term: 1]
78> 2 handling Ready
79 Ready MustSync=false:
80 HardState Term:1 Commit:4
81 Snapshot Index:4 Term:1 ConfState:Voters:[1 2] VotersOutgoing:[] Learners:[] LearnersNext:[] AutoLeave:false
82 Messages:
83 2->1 MsgAppResp Term:1 Log:0/4
84> 1 receiving messages
85 2->1 MsgAppResp Term:1 Log:0/4
86 DEBUG 1 recovered from needing snapshot, resumed sending replication messages to 2 [StateSnapshot match=4 next=5 paused pendingSnap=4]
87> 1 handling Ready
88 Ready MustSync=false:
89 Messages:
90 1->2 MsgApp Term:1 Log:1/4 Commit:4
91> 2 receiving messages
92 1->2 MsgApp Term:1 Log:1/4 Commit:4
93> 2 handling Ready
94 Ready MustSync=false:
95 Messages:
96 2->1 MsgAppResp Term:1 Log:0/4
97> 1 receiving messages
98 2->1 MsgAppResp Term:1 Log:0/4
View as plain text