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

prisma-risk / tsoracle / 26411803505
95%

Build:
DEFAULT BRANCH: main
Ran 25 May 2026 05:19PM UTC
Jobs 1
Files 66
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

25 May 2026 05:12PM UTC coverage: 96.29% (+0.004%) from 96.286%
26411803505

push

github

web-flow
fix(driver-paxos): make the single-active leadership lease observable and ABA-proof (#416)

The single-active leadership lease (#403) released only on the consuming
stream's Drop, and surfaced a rejected concurrent subscription through a
single tracing::error!. A server torn down without dropping its stream
(leaked WatchGuard, detached/aborted watch task) leaves the lease held
forever: every subsequent leadership_events() fails closed to an empty
stream and the node stays permanently NotServing, with no metric to alert on.

Fail-closed remains the safety contract. Two Servers built from one
Arc<PaxosDriver> share one OmniPaxos handle and therefore one epoch, so the
epoch fence cannot tell them apart and the lease is the only guard against
overlapping (duplicate) timestamps. Auto-superseding a held lease would
reopen that double-issue window, so recovery stays operator-driven (process
restart) — but the sink is now loud rather than silent.

- Emit tsoracle.leadership_stream.rejected.total on the fail-closed path and
  tag the existing tracing::error! with rejected_generation /
  active_generation, so a wedged lease is an alertable signal.
- Generation-number the lease: AtomicBool becomes a unique-id mint
  (next_generation) plus the holder slot (active_generation). StreamLease now
  releases with a conditional compare_exchange(generation -> 0), freeing the
  slot only if it still owns that generation — making release ABA-proof rather
  than an unconditional clobber.

Document the counter in operations.md. The openraft driver mints leadership
streams freely with no lease; adding single-active protection there is the
separate, larger follow-up noted on #403.

66 of 72 new or added lines in 1 file covered. (91.67%)

9706 of 10080 relevant lines covered (96.29%)

509001.45 hits per line

Uncovered Changes

Lines Coverage ∆ File
6
96.56
-1.91% crates/tsoracle-driver-paxos/src/driver.rs
Jobs
ID Job ID Ran Files Coverage
1 26411803505.1 25 May 2026 05:19PM UTC 66
96.29
GitHub Action Run
Source Files on build 26411803505
  • Tree
  • List 66
  • Changed 2
  • Source Changed 1
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26411803505
  • db5e49a4 on github
  • Prev Build on main (#26411200598)
  • Next Build on main (#26411929731)
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