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

prisma-risk / tsoracle / 26206552167
95%

Build:
DEFAULT BRANCH: main
Ran 21 May 2026 05:06AM UTC
Jobs 1
Files 30
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

21 May 2026 05:03AM UTC coverage: 92.675% (+0.5%) from 92.174%
26206552167

push

github

web-flow
feat(examples): openraft-standalone + openraft-piggyback (#20)

* feat(examples): replace openraft-cluster with openraft-standalone

Adopt the new tsoracle-driver-openraft crate. The example body shrinks
from a hand-rolled OpenraftDriver + file-backed store + leader_watch task
to three driver bindings plus a small StandaloneRouter wrapper that adds
host-specific NodeId -> tsoracle-addr resolution for LeaderHint
follower-redirect. tonic raft peer transport ports over verbatim.

SnapshotPolicy::Never is set because the bundled HighWaterStateMachine
keeps state in memory only; persisted snapshots are a planned crate
follow-up.

Operational story preserved: 3-process bring-up via scripts/run.sh,
`kill -9` leader for failover demo.

* feat(examples): add openraft-piggyback example

Single-binary, in-process 3-node demonstration of the envelope pattern:
a host service with AppData = HostCommand::{Kv(KvOp), Tso(HighWaterCmd)}
where TSO commands ride the host's existing raft log instead of a
dedicated TSO cluster. Uses openraft-toolkit's MemNetwork for in-process
transport; demo runs in ~3s.

The demo's run_demo() function is shared by the bin (src/main.rs) and a
smoke test (tests/smoke.rs) that asserts the post-failover monotonicity
invariant: new_high_water > old_high_water AND next_ts > last_pre_ts.

* fix(examples/piggyback): address review findings

- PiggybackHost::current_high_water now maps LinearizableReadError::
  ForwardToLeader to ConsensusError::NotLeader, mirroring StandaloneHost
  after PR #19. The example is a teaching artifact; the prior blanket
  TransientDriver mapping taught the wrong pattern.
- Demo binds tsoracle server ports via TcpListener::bind("127.0.0.1:0")
  rather than the hardcoded 55561/55562/55563 range, eliminating the
  CI conflict hazard.
- The two client.get_ts() retry loops now surface their transient errors
  via tracing::warn! during the retry window and include the underlying
  error in the deadline-expired anyhow! mess... (continued)

2404 of 2594 relevant lines covered (92.68%)

212658.18 hits per line

Jobs
ID Job ID Ran Files Coverage
1 26206552167.1 21 May 2026 05:06AM UTC 30
92.68
GitHub Action Run
Source Files on build 26206552167
  • Tree
  • List 30
  • Changed 4
  • Source Changed 0
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26206552167
  • 3fe3ade8 on github
  • Prev Build on main (#26203786530)
  • Next Build on main (#26206844940)
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