# Initialize a range with three replicas, none of which have send tokens.
init regular_init=0 elastic_init=0 max_inflight_bytes=2MiB
range_id=1 tenant_id=1 local_replica_id=1 next_raft_index=1
  store_id=1 replica_id=1 type=VOTER_FULL state=StateReplicate next=1
  store_id=2 replica_id=2 type=VOTER_FULL state=StateReplicate next=1
  store_id=3 replica_id=3 type=VOTER_FULL state=StateReplicate next=1
----
r1: [(n1,s1):1*,(n2,s2):2,(n3,s3):3]
t1/s1: eval reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB
       send reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB
t1/s2: eval reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB
       send reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB
t1/s3: eval reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB
       send reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB

# Append entries. Replica 1 has no send tokens, but is not allowed to form a
# send-queue since it is the leader. Replica 3 also has no send tokens, but is
# not allowed to form a send-queue to maintain quorum.
raft_event pull-mode
range_id=1
  entries
    term=1 index=1 pri=NormalPri size=1.5MiB
    term=1 index=2 pri=NormalPri size=1.5MiB
    term=1 index=3 pri=NormalPri size=1.5MiB
    term=1 index=4 pri=NormalPri size=1.5MiB
    term=1 index=5 pri=NormalPri size=1.5MiB
----
t1/s1: eval reg=-7.5 MiB/+16 MiB ela=-7.5 MiB/+8.0 MiB
       send reg=-7.5 MiB/+16 MiB ela=-7.5 MiB/+8.0 MiB
t1/s2: eval reg=+0 B/+16 MiB ela=-7.5 MiB/+8.0 MiB
       send reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB
t1/s3: eval reg=-7.5 MiB/+16 MiB ela=-7.5 MiB/+8.0 MiB
       send reg=-7.5 MiB/+16 MiB ela=-7.5 MiB/+8.0 MiB

stream_state range_id=1
----
(n1,s1):1: state=replicate closed=false inflight=[1,6) (7.5 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+7.5 MiB ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
NormalPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n2,s2):2: state=replicate closed=false inflight=[1,1) send_queue=[1,6) precise_q_size=+7.5 MiB watching-for-tokens
eval deducted: reg=+0 B ela=+7.5 MiB
eval original in send-q: reg=+7.5 MiB ela=+0 B
++++
(n3,s3):3: state=replicate closed=false inflight=[1,6) (7.5 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+7.5 MiB ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
NormalPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
MsgApps sent in pull mode:
 to: 3, lowPri: false entries: [1 2 3 4 5]
++++

# Transition replica 3 to StateSnapshot. Replica 2 needs to force-flush, so
# force-flush becomes true and it schedules itself (scheduled-replicas value
# below).
set_replicas pull-mode
range_id=1 tenant_id=1 local_replica_id=1 next_raft_index=6
  store_id=1 replica_id=1 type=VOTER_FULL state=StateReplicate next=6
  store_id=2 replica_id=2 type=VOTER_FULL state=StateReplicate next=1
  store_id=3 replica_id=3 type=VOTER_FULL state=StateSnapshot next=6
----
r1: [(n1,s1):1*,(n2,s2):2,(n3,s3):3]

stream_state range_id=1
----
(n1,s1):1: state=replicate closed=false inflight=[1,6) (7.5 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+7.5 MiB ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
NormalPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n2,s2):2: state=replicate closed=false inflight=[1,1) send_queue=[1,6) precise_q_size=+7.5 MiB force-flushing
eval deducted: reg=+0 B ela=+7.5 MiB
eval original in send-q: reg=+7.5 MiB ela=+0 B
++++
(n3,s3):3: closed
++++
schedule-controller-event-count: 1
scheduled-replicas: 2

# Scheduler event. 3MiB is dequeued, since force-flush grabs up to 4MiB of
# entries. The replica does not schedule itself again since the
# max-inflight-bytes limit of 2MiB has been reached.
handle_scheduler_event range_id=1
----
(n1,s1):1: state=replicate closed=false inflight=[1,6) (7.5 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+7.5 MiB ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
NormalPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n2,s2):2: state=replicate closed=false inflight=[1,3) (3.0 MiB) send_queue=[3,6) precise_q_size=+4.5 MiB force-flushing
eval deducted: reg=+0 B ela=+7.5 MiB
eval original in send-q: reg=+4.5 MiB ela=+0 B
LowPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
++++
(n3,s3):3: closed
++++
MsgApps sent in pull mode:
 to: 2, lowPri: true entries: [1 2]
++++
schedule-controller-event-count: 1

# Send an empty event. Nothing will happen because force-flush is paused.
raft_event pull-mode
range_id=1
----
t1/s1: eval reg=-7.5 MiB/+16 MiB ela=-7.5 MiB/+8.0 MiB
       send reg=-7.5 MiB/+16 MiB ela=-7.5 MiB/+8.0 MiB
t1/s2: eval reg=+0 B/+16 MiB ela=-7.5 MiB/+8.0 MiB
       send reg=+0 B/+16 MiB ela=-3.0 MiB/+8.0 MiB
t1/s3: eval reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB
       send reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB

stream_state range_id=1
----
(n1,s1):1: state=replicate closed=false inflight=[1,6) (7.5 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+7.5 MiB ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
NormalPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n2,s2):2: state=replicate closed=false inflight=[1,3) (3.0 MiB) send_queue=[3,6) precise_q_size=+4.5 MiB force-flushing
eval deducted: reg=+0 B ela=+7.5 MiB
eval original in send-q: reg=+4.5 MiB ela=+0 B
LowPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
++++
(n3,s3):3: closed
++++
schedule-controller-event-count: 1

# Admit an entry so that s2 has only 1.5MiB inflight, which is less than the
# max-inflight-bytes of 2MiB and unpauses force-flush.
admit
range_id=1
  store_id=1 term=1 to_index=1 pri=NormalPri
  store_id=2 term=1 to_index=1 pri=NormalPri
----
t1/s1: eval reg=-6.0 MiB/+16 MiB ela=-6.0 MiB/+8.0 MiB
       send reg=-6.0 MiB/+16 MiB ela=-6.0 MiB/+8.0 MiB
t1/s2: eval reg=+0 B/+16 MiB ela=-7.5 MiB/+8.0 MiB
       send reg=+0 B/+16 MiB ela=-3.0 MiB/+8.0 MiB
t1/s3: eval reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB
       send reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB

raft_event pull-mode
range_id=1
----
t1/s1: eval reg=-6.0 MiB/+16 MiB ela=-6.0 MiB/+8.0 MiB
       send reg=-6.0 MiB/+16 MiB ela=-6.0 MiB/+8.0 MiB
t1/s2: eval reg=+0 B/+16 MiB ela=-7.5 MiB/+8.0 MiB
       send reg=+0 B/+16 MiB ela=-3.0 MiB/+8.0 MiB
t1/s3: eval reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB
       send reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB

# Replica 3 schedules itself, as force-flush is unpaused.
stream_state range_id=1
----
(n1,s1):1: state=replicate closed=false inflight=[2,6) (6.0 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+6.0 MiB ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
NormalPri:
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n2,s2):2: state=replicate closed=false inflight=[2,3) (1.5 MiB) send_queue=[3,6) precise_q_size=+4.5 MiB force-flushing
eval deducted: reg=+0 B ela=+7.5 MiB
eval original in send-q: reg=+4.5 MiB ela=+0 B
LowPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
++++
(n3,s3):3: closed
++++
schedule-controller-event-count: 2
scheduled-replicas: 2

# Two more entries are send and force-flush pauses. Note that sending 1 entry
# exceeds the max-inflight-bytes, but the code is a coarse graned
# pause/unpause, so each scheduled event can send up to 4MiB when unpaused.
handle_scheduler_event range_id=1
----
(n1,s1):1: state=replicate closed=false inflight=[2,6) (6.0 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+6.0 MiB ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
NormalPri:
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n2,s2):2: state=replicate closed=false inflight=[2,5) (4.5 MiB) send_queue=[5,6) precise_q_size=+1.5 MiB force-flushing
eval deducted: reg=+0 B ela=+7.5 MiB
eval original in send-q: reg=+1.5 MiB ela=+0 B
LowPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
++++
(n3,s3):3: closed
++++
MsgApps sent in pull mode:
 to: 2, lowPri: true entries: [3 4]
++++
schedule-controller-event-count: 2

# Noop since force flush is paused.
handle_scheduler_event range_id=1
----
(n1,s1):1: state=replicate closed=false inflight=[2,6) (6.0 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+6.0 MiB ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
NormalPri:
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n2,s2):2: state=replicate closed=false inflight=[2,5) (4.5 MiB) send_queue=[5,6) precise_q_size=+1.5 MiB force-flushing
eval deducted: reg=+0 B ela=+7.5 MiB
eval original in send-q: reg=+1.5 MiB ela=+0 B
LowPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
++++
(n3,s3):3: closed
++++
schedule-controller-event-count: 2

# Admit an entry. Force-flush stays paused since inflight bytes is 3MiB.
admit
range_id=1
  store_id=2 term=1 to_index=2 pri=NormalPri
----
t1/s1: eval reg=-6.0 MiB/+16 MiB ela=-6.0 MiB/+8.0 MiB
       send reg=-6.0 MiB/+16 MiB ela=-6.0 MiB/+8.0 MiB
t1/s2: eval reg=+0 B/+16 MiB ela=-7.5 MiB/+8.0 MiB
       send reg=+0 B/+16 MiB ela=-6.0 MiB/+8.0 MiB
t1/s3: eval reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB
       send reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB

raft_event pull-mode
range_id=1
----
t1/s1: eval reg=-6.0 MiB/+16 MiB ela=-6.0 MiB/+8.0 MiB
       send reg=-6.0 MiB/+16 MiB ela=-6.0 MiB/+8.0 MiB
t1/s2: eval reg=+0 B/+16 MiB ela=-7.5 MiB/+8.0 MiB
       send reg=+0 B/+16 MiB ela=-6.0 MiB/+8.0 MiB
t1/s3: eval reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB
       send reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB

stream_state range_id=1
----
(n1,s1):1: state=replicate closed=false inflight=[2,6) (6.0 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+6.0 MiB ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
NormalPri:
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n2,s2):2: state=replicate closed=false inflight=[3,5) (3.0 MiB) send_queue=[5,6) precise_q_size=+1.5 MiB force-flushing
eval deducted: reg=+0 B ela=+7.5 MiB
eval original in send-q: reg=+1.5 MiB ela=+0 B
LowPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
++++
(n3,s3):3: closed
++++
schedule-controller-event-count: 2

# Admit another entry, and inflight bytes drops to 1.5MiB, unpausing force-flush.
admit
range_id=1
  store_id=2 term=1 to_index=3 pri=NormalPri
----
t1/s1: eval reg=-6.0 MiB/+16 MiB ela=-6.0 MiB/+8.0 MiB
       send reg=-6.0 MiB/+16 MiB ela=-6.0 MiB/+8.0 MiB
t1/s2: eval reg=+0 B/+16 MiB ela=-7.5 MiB/+8.0 MiB
       send reg=+0 B/+16 MiB ela=-6.0 MiB/+8.0 MiB
t1/s3: eval reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB
       send reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB

raft_event pull-mode
range_id=1
----
t1/s1: eval reg=-6.0 MiB/+16 MiB ela=-6.0 MiB/+8.0 MiB
       send reg=-6.0 MiB/+16 MiB ela=-6.0 MiB/+8.0 MiB
t1/s2: eval reg=+0 B/+16 MiB ela=-7.5 MiB/+8.0 MiB
       send reg=+0 B/+16 MiB ela=-6.0 MiB/+8.0 MiB
t1/s3: eval reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB
       send reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB

# Since force-flush unpauses, replica 3 schedules itself.
stream_state range_id=1
----
(n1,s1):1: state=replicate closed=false inflight=[2,6) (6.0 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+6.0 MiB ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
NormalPri:
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n2,s2):2: state=replicate closed=false inflight=[4,5) (1.5 MiB) send_queue=[5,6) precise_q_size=+1.5 MiB force-flushing
eval deducted: reg=+0 B ela=+7.5 MiB
eval original in send-q: reg=+1.5 MiB ela=+0 B
LowPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
++++
(n3,s3):3: closed
++++
schedule-controller-event-count: 3
scheduled-replicas: 2

# Scheduler event causes an entry to be sent and the send-queue becomes empty,
# so no more need to force-flush.
handle_scheduler_event range_id=1
----
(n1,s1):1: state=replicate closed=false inflight=[2,6) (6.0 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+6.0 MiB ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
NormalPri:
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n2,s2):2: state=replicate closed=false inflight=[4,6) (3.0 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+0 B ela=+7.5 MiB
eval original in send-q: reg=+0 B ela=+0 B
LowPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n3,s3):3: closed
++++
MsgApps sent in pull mode:
 to: 2, lowPri: true entries: [5]
++++
schedule-controller-event-count: 3

# Return replica 3 to StateReplicate.
set_replicas pull-mode
range_id=1 tenant_id=1 local_replica_id=1 next_raft_index=6
  store_id=1 replica_id=1 type=VOTER_FULL state=StateReplicate next=6 match=1
  store_id=2 replica_id=2 type=VOTER_FULL state=StateReplicate next=6 match=3
  store_id=3 replica_id=3 type=VOTER_FULL state=StateReplicate next=1
----
r1: [(n1,s1):1*,(n2,s2):2,(n3,s3):3]

# Replica 3 has a send-queue but does not need to force-flush.
stream_state range_id=1
----
(n1,s1):1: state=replicate closed=false inflight=[2,6) (6.0 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+6.0 MiB ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
NormalPri:
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n2,s2):2: state=replicate closed=false inflight=[4,6) (3.0 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+0 B ela=+7.5 MiB
eval original in send-q: reg=+0 B ela=+0 B
LowPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n3,s3):3: state=replicate closed=false inflight=[1,1) send_queue=[1,6) precise_q_size=+0 B watching-for-tokens
eval deducted: reg=+0 B ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
++++
schedule-controller-event-count: 3

# Force flush up to index 3. Replica 3 starts force-flushing and schedules itself.
set_force_flush_index range_id=1 index=3
----
(n1,s1):1: state=replicate closed=false inflight=[2,6) (6.0 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+6.0 MiB ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
NormalPri:
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n2,s2):2: state=replicate closed=false inflight=[4,6) (3.0 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+0 B ela=+7.5 MiB
eval original in send-q: reg=+0 B ela=+0 B
LowPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n3,s3):3: state=replicate closed=false inflight=[1,1) send_queue=[1,6) precise_q_size=+0 B force-flushing (stop=3)
eval deducted: reg=+0 B ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
++++
schedule-controller-event-count: 4
scheduled-replicas: 3

# Scheduler event. Replica 3 sends two entries, but does not schedule itself
# again because max-inflight-bytes is reached.
handle_scheduler_event range_id=1
----
(n1,s1):1: state=replicate closed=false inflight=[2,6) (6.0 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+6.0 MiB ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
NormalPri:
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n2,s2):2: state=replicate closed=false inflight=[4,6) (3.0 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+0 B ela=+7.5 MiB
eval original in send-q: reg=+0 B ela=+0 B
LowPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n3,s3):3: state=replicate closed=false inflight=[1,3) (3.0 MiB) send_queue=[3,6) precise_q_size=+0 B force-flushing (stop=3)
eval deducted: reg=+0 B ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
LowPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
++++
MsgApps sent in pull mode:
 to: 3, lowPri: true entries: [1 2]
++++
schedule-controller-event-count: 4

# Noop.
raft_event pull-mode
range_id=1
----
t1/s1: eval reg=-6.0 MiB/+16 MiB ela=-6.0 MiB/+8.0 MiB
       send reg=-6.0 MiB/+16 MiB ela=-6.0 MiB/+8.0 MiB
t1/s2: eval reg=+0 B/+16 MiB ela=-7.5 MiB/+8.0 MiB
       send reg=+0 B/+16 MiB ela=-7.5 MiB/+8.0 MiB
t1/s3: eval reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB
       send reg=+0 B/+16 MiB ela=-3.0 MiB/+8.0 MiB

stream_state range_id=1
----
(n1,s1):1: state=replicate closed=false inflight=[2,6) (6.0 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+6.0 MiB ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
NormalPri:
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n2,s2):2: state=replicate closed=false inflight=[4,6) (3.0 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+0 B ela=+7.5 MiB
eval original in send-q: reg=+0 B ela=+0 B
LowPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n3,s3):3: state=replicate closed=false inflight=[1,3) (3.0 MiB) send_queue=[3,6) precise_q_size=+0 B force-flushing (stop=3)
eval deducted: reg=+0 B ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
LowPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
++++
schedule-controller-event-count: 4

# Admit one entry on replica 3, so inflight bytes is 1.5MiB which is below the
# max-inflight-bytes threshold.
admit
range_id=1
  store_id=3 term=1 to_index=1 pri=NormalPri
----
t1/s1: eval reg=-6.0 MiB/+16 MiB ela=-6.0 MiB/+8.0 MiB
       send reg=-6.0 MiB/+16 MiB ela=-6.0 MiB/+8.0 MiB
t1/s2: eval reg=+0 B/+16 MiB ela=-7.5 MiB/+8.0 MiB
       send reg=+0 B/+16 MiB ela=-7.5 MiB/+8.0 MiB
t1/s3: eval reg=+0 B/+16 MiB ela=+0 B/+8.0 MiB
       send reg=+0 B/+16 MiB ela=-3.0 MiB/+8.0 MiB

# Advance force-flush-index. The raft event causes the replicaSendStream to
# see the advancement, and to see that max-inflight-bytes is small enough to
# unpause force-flush. So it schedules itself.
set_force_flush_index range_id=1 index=4
----
(n1,s1):1: state=replicate closed=false inflight=[2,6) (6.0 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+6.0 MiB ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
NormalPri:
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n2,s2):2: state=replicate closed=false inflight=[4,6) (3.0 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+0 B ela=+7.5 MiB
eval original in send-q: reg=+0 B ela=+0 B
LowPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n3,s3):3: state=replicate closed=false inflight=[2,3) (1.5 MiB) send_queue=[3,6) precise_q_size=+0 B force-flushing (stop=4)
eval deducted: reg=+0 B ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
LowPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
++++
schedule-controller-event-count: 5
scheduled-replicas: 3

# Scheduler event cause replica 3 to send two entries, and since
# force-flush-index is reached, force-flushing stops.
handle_scheduler_event range_id=1
----
(n1,s1):1: state=replicate closed=false inflight=[2,6) (6.0 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+6.0 MiB ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
NormalPri:
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n2,s2):2: state=replicate closed=false inflight=[4,6) (3.0 MiB) send_queue=[6,6) precise_q_size=+0 B
eval deducted: reg=+0 B ela=+7.5 MiB
eval original in send-q: reg=+0 B ela=+0 B
LowPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
  term=1 index=5  tokens=1572864
++++
(n3,s3):3: state=replicate closed=false inflight=[2,5) (4.5 MiB) send_queue=[5,6) precise_q_size=+0 B watching-for-tokens
eval deducted: reg=+0 B ela=+0 B
eval original in send-q: reg=+0 B ela=+0 B
LowPri:
  term=1 index=1  tokens=1572864
  term=1 index=2  tokens=1572864
  term=1 index=3  tokens=1572864
  term=1 index=4  tokens=1572864
++++
MsgApps sent in pull mode:
 to: 3, lowPri: true entries: [3 4]
++++
schedule-controller-event-count: 5
