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

prisma-risk / tsoracle / 26678761119
95%

Build:
DEFAULT BRANCH: main
Ran 30 May 2026 08:23AM UTC
Jobs 1
Files 93
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

30 May 2026 08:03AM UTC coverage: 95.217% (-0.001%) from 95.218%
26678761119

push

github

web-flow
fix(client): don't issue budget-squeezed seq ride-out attempts (deflake) (#586)

fix(client): don't issue budget-squeezed seq ride-out attempts

Deflakes seq_stale_epoch_hint_rides_out_then_surfaces_election (and the get_seq ride-out path generally) under CI load.

issue_seq_rpc rides out an election by re-issuing GetSeq until the overall deadline. Budget::next_attempt() has no minimum floor, so the final ride-out attempt is handed a near-zero budget squeezed by the overall deadline. On a starved runner that attempt's RPC times out post-send -> classify -> Uncertain -> an immediate 'return SeqUncertain', bypassing surface_error's sticky-election-signal precedence. The get_ts path tolerates this (its squeezed timeout is a transport last_err that surface_error already ranks below the election signal); the non-idempotent dense path cannot, since a post-send timeout is Uncertain and must return immediately to avoid a double-spend on retry.

Fix: once at least one attempt has been issued, the seq loop refuses to issue a sub-viable attempt whose budget the overall deadline has squeezed below a full per_attempt_deadline window. A never-issued RPC is unambiguous, so it breaks and lets surface_error return the recorded election FAILED_PRECONDITION. This also removes a real-world wart: a legitimate ride-out no longer manufactures a spurious SeqUncertain (forcing caller reconciliation) when the runner is briefly slow. Scoped to issue_seq_rpc; get_ts is unchanged.

Adds seq_ride_out_skips_squeezed_attempt_and_surfaces_election: a deterministic regression (server delays every reply 300ms; 500ms/500ms policy makes the second attempt structurally squeezed below the 300ms reply floor) that fails with SeqUncertain without the fix. Stressed 40x (new) and 120x incl. under induced CPU starvation (the previously-flaky test) with zero failures.

Signed-off-by: Sebastian Thiebaud <sebastian@prismarisk.com>

37 of 39 new or added lines in 1 file covered. (94.87%)

15766 of 16558 relevant lines covered (95.22%)

333915.53 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
94.01
0.03% crates/tsoracle-client/src/retry.rs
Jobs
ID Job ID Ran Files Coverage
1 26678761119.1 30 May 2026 08:23AM UTC 93
95.22
GitHub Action Run
Source Files on build 26678761119
  • Tree
  • List 93
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26678761119
  • 774755ae on github
  • Prev Build on main (#26678748372)
  • Next Build on main (#26678801303)
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