diff options
Diffstat (limited to 'src/remake/coordinator.rs')
| -rw-r--r-- | src/remake/coordinator.rs | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/remake/coordinator.rs b/src/remake/coordinator.rs index 427de08..20de712 100644 --- a/src/remake/coordinator.rs +++ b/src/remake/coordinator.rs @@ -106,7 +106,7 @@ async fn step<H: Host>(host: &H, id: &str) -> Result<bool, StoreError> { let tally = vote::tally(id, &record, &all, ®ister); // The deadline first: a majority counted after it is too late. - if records::unix_millis() >= record.proposal.settle_until { + if host.now_millis() >= record.proposal.settle_until { decide_abort( host, id, @@ -181,7 +181,7 @@ async fn commit<H: Host>(host: &H, id: &str, record: &Record) -> Result<(), Stor to_epoch: to_epoch.into(), base_heads, snapshot_bytes, - decided_at: records::unix_millis(), + decided_at: host.now_millis(), }; match decide(host, id, decision).await? { Some(Decision::Committed { .. }) => { @@ -200,7 +200,7 @@ async fn commit<H: Host>(host: &H, id: &str, record: &Record) -> Result<(), Stor async fn decide_abort<H: Host>(host: &H, id: &str, reason: String) -> Result<(), StoreError> { let decision = Decision::Aborted { reason: reason.clone(), - decided_at: records::unix_millis(), + decided_at: host.now_millis(), }; if decide(host, id, decision).await?.is_some() { warn!(remake = %id, reason = %reason, "Remake aborted"); @@ -220,6 +220,7 @@ async fn decide<H: Host>( ) -> Result<Option<Decision>, StoreError> { let id = id.to_owned(); let grace = host.dormant_after().as_millis() as u64; + let clock = host.clock(); host.commit_doc(move |doc| -> Result<Option<Decision>, StoreError> { let all = records::load_all(doc); let Some((_, record)) = all.iter().find(|(other, _)| *other == id) else { @@ -232,7 +233,7 @@ async fn decide<H: Host>( Decision::Committed { decided_at, .. } => { let register = records::load_register(doc); let tally = vote::tally(&id, record, &all, ®ister); - let expired = record.phase(records::unix_millis(), grace) == Phase::Expired; + let expired = record.phase(clock.now_millis(), grace) == Phase::Expired; match obstacle(&id, record, &all) { Some(reason) => Decision::Aborted { reason, decided_at }, // Others may abort it by now (`api`): too late to commit. |
