• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

prisma-risk / tsoracle / 26338352012
95%

Build:
DEFAULT BRANCH: main
Ran 23 May 2026 04:58PM UTC
Jobs 1
Files 73
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

23 May 2026 04:54PM UTC coverage: 95.266% (-0.08%) from 95.345%
26338352012

push

github

web-flow
fix(examples/paxos-piggyback): deterministic unit tests + apply-path correctness fixes (#200)

The end-to-end smoke test (tests/smoke.rs) flakes at ~5% because it depends on two timing-sensitive properties of OmniPaxos that the demo's tight deadlines can expose under runtime contention:

- get_current_leader() returns the locally-promised pid, not the cluster-elected leader. During post-failover election, both surviving candidates can transiently promise to themselves, and a fence triggered on the losing candidate hangs against quorum it never wins.
- AcceptDecide payload delivery can lag the corresponding Decide message, so a follower's decided_idx can advance past entries that are not yet in its local log. read_decided_suffix returns None in this state.

Replace the flaky end-to-end test with deterministic unit tests of the actual piggyback contract:

- envelope wrapping (HighWaterCommand -> MyAppCommand)
- Snapshot::create fold semantics (KV+TSO, monotonic high-water from repeated Advances, Delete removes prior Put, KV/TSO half-isolation, Barrier no-op)
- Snapshot::merge (takes max of high-waters, KV overwrites on conflict)
- apply-path correctness for each variant including monotonicity and half-isolation (the piggyback invariant)
- snapshot apply (hydrate empty state, merge into populated state without moving high-water backward)

To make the apply path testable as pure functions, extract apply_decided_into and apply_snapshot_into from drain_decided_into. The extraction is behavior-preserving; drain_decided_into now delegates to them.

Also include two correctness fixes for issues found while diagnosing the flake:

- drain_decided_into: return early without advancing cursor when read_decided_suffix returns None. The prior code unconditionally set *cursor = decided_idx, silently dropping entries when they later arrived in the local log.
- PiggybackHost::current_high_water and submit_advance: use the Notified::enable() pattern. Mirrors the driver-p... (continued)

9558 of 10033 relevant lines covered (95.27%)

589296.44 hits per line

Coverage Regressions

Lines Coverage ∆ File
6
90.53
-6.32% crates/tsoracle-driver-paxos/src/driver.rs
2
69.6
-0.88% crates/tsoracle-paxos-toolkit/src/lifecycle/mod.rs
Jobs
ID Job ID Ran Files Coverage
1 26338352012.1 23 May 2026 04:58PM UTC 73
95.27
GitHub Action Run
Source Files on build 26338352012
  • Tree
  • List 73
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26338352012
  • 5d386111 on github
  • Prev Build on main (#26325326024)
  • Next Build on main (#26338821448)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc