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

supabase / cli / 32136954468
62%
develop: 62%

Build:
Build:
LAST BUILD BRANCH: gh-readonly-queue/develop/pr-6322-bd8c58f3c016c7a062b2067bc925c3188194437a
DEFAULT BRANCH: develop
Ran 18 Aug 2026 12:29PM UTC
Jobs 1
Files 95
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

18 Aug 2026 12:27PM UTC coverage: 62.406%. Remained the same
32136954468

push

github

web-flow
fix(stack): deflake service-state settling and control endpoint acquisition (#6245)

## Summary

This PR removes a family of intermittent stack test failures by fixing
the underlying races rather than the tests, then verifies the result
with five consecutive green CI runs and a local 2× CPU-oversubscribed
stress gauntlet (8/8 integration runs green).

Runtime fixes:

- **`stopService` settling race** (the original `'Dormant' vs 'Stopped'`
CI flake): `stopService` returned before the background projection fiber
re-published the public state, so an immediate `getState` could observe
the previous status. It now settles the projection before returning,
matching every start path.
- **Control endpoint port collisions**: the control endpoint derived a
single loopback port from two bytes of the stack id, so two live stacks
could birthday-collide and the later acquirer hard-failed with
`ControlAddressConflictError`. `acquireControl`/`probeControl` now walk
a short deterministic candidate sequence — attach to a matching owner on
any candidate (verified by `ownershipId`), bind the first free one, and
conflict only when all candidates are foreign-occupied.
`connectManagedStack` uses the probed endpoint, and exact service-port
requests reserve every candidate. Protocol mismatch still fails closed.
- **Keep-alive livelock**: control status probes reused pooled
connections, so a closed listener kept answering `/owner` on the
poller's own hot connection and a scan-first acquirer could never bind
the freed endpoint. Control reads and stop requests are now one-shot
connections in both Node and Bun transports.
- **Retry budgets**: the bound-but-not-serving acquire retry is now
duration-bounded (a count-based budget stretched a single acquire to
30–45s when reads hit the 500ms transport timeout), and `startStack`'s
workspace-repair fence waits up to 30s instead of ~5s, which a realistic
Git repair can exceed.

Test hardening:

- Managed test layers set a new `preferCatal... (continued)

5571 of 8927 relevant lines covered (62.41%)

6.65 hits per line

Jobs
ID Job ID Ran Files Coverage
1 32136954468.1 18 Aug 2026 12:29PM UTC 95
62.41
GitHub Action Run
Source Files on build 32136954468
  • Tree
  • List 95
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #32136954468
  • c8f82350 on github
  • Prev Build on gh-readonly-queue/develop/pr-6232-861fa67f9146e45a75c26d024544124bd526a03e (#32122789022)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc