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

prisma-risk / tsoracle / 26382472848
95%

Build:
DEFAULT BRANCH: main
Ran 25 May 2026 04:04AM UTC
Jobs 1
Files 83
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 04:00AM UTC coverage: 94.859%. Remained the same
26382472848

push

github

web-flow
fix(driver-paxos): re-subscribe leadership_events instead of take-once (#262) (#396)

* fix(driver-paxos): re-subscribe leadership_events instead of take-once (#262)

`PaxosDriver::leadership_events` held the leader-event stream in a
`Mutex<Option<..>>` and `take()`'d it on the first call; every later
call returned `stream::empty()`. A second subscriber — e.g. a driver
re-derived across an in-process restart — got a permanent, silent
leader-event blackout. The openraft driver avoids this by re-deriving
its stream from the raft metrics watch on every call.

Mint fresh streams per call, the same way:

- Add a cloneable `LeaderEventSubscriber` wrapping the leader-event
  `watch::Receiver`, with `subscribe()` minting a fresh
  `LeaderEventStream`. `WatchStream::new` yields the channel's current
  value on first poll, so every subscription honours the
  `ConsensusDriver::leadership_events` synchronous-first-item contract.
- `leader_event_channel()` now returns `(LeaderEventSender,
  LeaderEventSubscriber)`; `PaxosRunner` and `StandaloneHost` expose
  `take_leader_subscriber()` in place of `take_leader_stream()`.
- `PaxosDriver` holds the subscriber and re-subscribes on every
  `leadership_events()` call — no one-shot take, no empty fallback.

The runner's drop-based shutdown is preserved: it retains only the
sender (never a receiver), so once the driver and every stream it
minted are dropped, the channel closes and the tick loop exits. The
driver's retained subscriber is what keeps the channel open while the
driver lives.

Pre-1.0 API change across the paxos toolkit, the driver crate, the
three paxos examples, and the stress topology.

* test(stress): widen paxos shutdown-completion guard to tolerate CI starvation

shutdown_completes_server_tasks timed out at 5s on a loaded CI runner.
The guard only exists to catch a server task whose drain path never
fires — that never completes regardless of the window — but the libtest
harness runs this file's many mult... (continued)

119 of 122 new or added lines in 5 files covered. (97.54%)

3 existing lines in 1 file now uncovered.

12842 of 13538 relevant lines covered (94.86%)

424803.65 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
84.41
-0.54% benchmarks/stress/src/topology/paxos.rs
1
95.9
-0.65% crates/tsoracle-driver-paxos/src/driver.rs
1
77.38
0.27% crates/tsoracle-paxos-toolkit/src/lifecycle/mod.rs

Coverage Regressions

Lines Coverage ∆ File
3
84.41
-0.54% benchmarks/stress/src/topology/paxos.rs
Jobs
ID Job ID Ran Files Coverage
1 26382472848.1 25 May 2026 04:04AM UTC 83
94.86
GitHub Action Run
Source Files on build 26382472848
  • Tree
  • List 83
  • Changed 5
  • Source Changed 5
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26382472848
  • 546fb10e on github
  • Prev Build on main (#26382464574)
  • Next Build on main (#26382772805)
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