# openraft port — snapshot_streaming/t32_snapshot_uses_prev_snap_membership: a SECOND snapshot
# (recompaction) must not lose the membership the FIRST snapshot already compacted past. (openraft's
# bug: compaction extracted membership only from a MembershipConfig log entry, so once that entry was
# compacted into the first snapshot, the second snapshot dropped membership.) With a low snapshot
# threshold, drive two rounds of compaction and confirm conf_state stays {1,2} the whole way.
add-nodes 2 voters=(1,2) snap=3
----
n1: created voters={1,2} term=0 commit=0 last=0
n2: created voters={1,2} term=0 commit=0 last=0

campaign 1
----
n1 candidate term=1
RequestVote term=1 last=0/0 prevote=false

stabilize
----
> n2 recv RequestVote term=1 last=0/0 prevote=false
> n2 ready
  VoteResponse term=1 prevote=false reject=false
> n1 recv VoteResponse term=1 prevote=false reject=false
> n1 ready
  Heartbeat term=1 commit=0
  AppendEntries term=1 prev=0/0 commit=0 entries=[1/1 empty]
  n1 leader-changed term=1 lead=1
> n2 recv Heartbeat term=1 commit=0
> n2 recv AppendEntries term=1 prev=0/0 commit=0 entries=[1/1 empty]
> n2 ready
  HeartbeatResponse term=1
  AppendResponse term=1 match=1
  n2 leader-changed term=1 lead=1
> n1 recv HeartbeatResponse term=1
> n1 recv AppendResponse term=1 match=1
> n1 ready
  AppendEntries term=1 prev=0/0 commit=0 entries=[1/1 empty]
  AppendEntries term=1 prev=1/1 commit=1 entries=[]
> n2 recv AppendEntries term=1 prev=0/0 commit=0 entries=[1/1 empty]
> n2 recv AppendEntries term=1 prev=1/1 commit=1 entries=[]
> n2 ready
  AppendResponse term=1 match=1
  AppendResponse term=1 match=1
> n1 recv AppendResponse term=1 match=1
> n1 recv AppendResponse term=1 match=1

propose 1 a
----
AppendEntries term=1 prev=1/1 commit=1 entries=[1/2 normal 0x010000000000000061]

propose 1 b
----
AppendEntries term=1 prev=1/2 commit=1 entries=[1/3 normal 0x010000000000000062]

propose 1 c
----
AppendEntries term=1 prev=1/3 commit=1 entries=[1/4 normal 0x010000000000000063]

propose 1 d
----
AppendEntries term=1 prev=1/4 commit=1 entries=[1/5 normal 0x010000000000000064]

stabilize
----
> n2 recv AppendEntries term=1 prev=1/1 commit=1 entries=[1/2 normal 0x010000000000000061]
> n2 recv AppendEntries term=1 prev=1/2 commit=1 entries=[1/3 normal 0x010000000000000062]
> n2 recv AppendEntries term=1 prev=1/3 commit=1 entries=[1/4 normal 0x010000000000000063]
> n2 recv AppendEntries term=1 prev=1/4 commit=1 entries=[1/5 normal 0x010000000000000064]
> n2 ready
  AppendResponse term=1 match=2
  AppendResponse term=1 match=3
  AppendResponse term=1 match=4
  AppendResponse term=1 match=5
> n1 recv AppendResponse term=1 match=2
> n1 recv AppendResponse term=1 match=3
> n1 recv AppendResponse term=1 match=4
> n1 recv AppendResponse term=1 match=5
> n1 ready
  AppendEntries term=1 prev=1/5 commit=2 entries=[]
  AppendEntries term=1 prev=1/5 commit=3 entries=[]
  AppendEntries term=1 prev=1/5 commit=4 entries=[]
  AppendEntries term=1 prev=1/5 commit=5 entries=[]
  n1 applied index=2
  n1 applied index=3
  n1 applied index=4
  n1 applied index=5
> n2 recv AppendEntries term=1 prev=1/5 commit=2 entries=[]
> n2 recv AppendEntries term=1 prev=1/5 commit=3 entries=[]
> n2 recv AppendEntries term=1 prev=1/5 commit=4 entries=[]
> n2 recv AppendEntries term=1 prev=1/5 commit=5 entries=[]
> n2 ready
  AppendResponse term=1 match=5
  AppendResponse term=1 match=5
  AppendResponse term=1 match=5
  AppendResponse term=1 match=5
  n2 applied index=2
  n2 applied index=3
  n2 applied index=4
  n2 applied index=5
> n1 recv AppendResponse term=1 match=5
> n1 recv AppendResponse term=1 match=5
> n1 recv AppendResponse term=1 match=5
> n1 recv AppendResponse term=1 match=5

conf-state 1
----
n1: voters={1,2}

raft-log 1
----
n1: commit=5 applied=5 last=5
  (snapshot covers <= index 5)

propose 1 e
----
AppendEntries term=1 prev=1/5 commit=5 entries=[1/6 normal 0x010000000000000065]

propose 1 f
----
AppendEntries term=1 prev=1/6 commit=5 entries=[1/7 normal 0x010000000000000066]

propose 1 g
----
AppendEntries term=1 prev=1/7 commit=5 entries=[1/8 normal 0x010000000000000067]

propose 1 h
----
AppendEntries term=1 prev=1/8 commit=5 entries=[1/9 normal 0x010000000000000068]

stabilize
----
> n2 recv AppendEntries term=1 prev=1/5 commit=5 entries=[1/6 normal 0x010000000000000065]
> n2 recv AppendEntries term=1 prev=1/6 commit=5 entries=[1/7 normal 0x010000000000000066]
> n2 recv AppendEntries term=1 prev=1/7 commit=5 entries=[1/8 normal 0x010000000000000067]
> n2 recv AppendEntries term=1 prev=1/8 commit=5 entries=[1/9 normal 0x010000000000000068]
> n2 ready
  AppendResponse term=1 match=6
  AppendResponse term=1 match=7
  AppendResponse term=1 match=8
  AppendResponse term=1 match=9
> n1 recv AppendResponse term=1 match=6
> n1 recv AppendResponse term=1 match=7
> n1 recv AppendResponse term=1 match=8
> n1 recv AppendResponse term=1 match=9
> n1 ready
  AppendEntries term=1 prev=1/9 commit=6 entries=[]
  AppendEntries term=1 prev=1/9 commit=7 entries=[]
  AppendEntries term=1 prev=1/9 commit=8 entries=[]
  AppendEntries term=1 prev=1/9 commit=9 entries=[]
  n1 applied index=6
  n1 applied index=7
  n1 applied index=8
  n1 applied index=9
> n2 recv AppendEntries term=1 prev=1/9 commit=6 entries=[]
> n2 recv AppendEntries term=1 prev=1/9 commit=7 entries=[]
> n2 recv AppendEntries term=1 prev=1/9 commit=8 entries=[]
> n2 recv AppendEntries term=1 prev=1/9 commit=9 entries=[]
> n2 ready
  AppendResponse term=1 match=9
  AppendResponse term=1 match=9
  AppendResponse term=1 match=9
  AppendResponse term=1 match=9
  n2 applied index=6
  n2 applied index=7
  n2 applied index=8
  n2 applied index=9
> n1 recv AppendResponse term=1 match=9
> n1 recv AppendResponse term=1 match=9
> n1 recv AppendResponse term=1 match=9
> n1 recv AppendResponse term=1 match=9

conf-state 1
----
n1: voters={1,2}

raft-log 1
----
n1: commit=9 applied=9 last=9
  (snapshot covers <= index 9)

