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

supabase / cli / 29837593823
65%

Build:
DEFAULT BRANCH: develop
Ran 21 Jul 2026 02:12PM UTC
Jobs 1
Files 230
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 Jul 2026 01:59PM UTC coverage: 65.301% (+0.02%) from 65.277%
29837593823

push

github

web-flow
fix(cli): stop telemetry hangs and errors on blocked networks (#5880)

On networks that block or blackhole `eu.posthog.com` (corporate proxies,
CI and Docker egress policies, air-gapped machines), telemetry breaks
the CLI itself: stable v2.109.1 pays a 5s trailing hang and exits 1 with
an UnknownError payload after every command, long-running commands print
raw SDK stack traces to stderr, and the Go binary's shutdown wait is
unbounded. The only workaround was `supabase telemetry disable`, which
permanently removes those users from CLI analytics. This PR makes
telemetry strictly fire-and-forget: a failed delivery never changes a
command's output, exit code, or runtime beyond a 2s cap.

**Changed:**
- **Exit 1 after successful commands**: the TS shutdown finalizer was
`Effect.promise(...).pipe(Effect.ignore)`, but `Effect.promise` turns
the shutdown-deadline rejection into a defect that `Effect.ignore`
cannot swallow, so a telemetry timeout failed the whole command. The
rejection is now caught on the promise itself.
- **Unbounded and stacking exit delays**: one shared 2s budget
(`EXIT_DELAY_CAP_MS`) bounds each request and the entire `_shutdown`
drain on the TS side, and the Go client gets the same 2s
`ShutdownTimeout` (the SDK default waits indefinitely, including
retries). The previous 5s shutdown deadline left room for two sequential
2s request timeouts (~4s exits).
- **Work outliving the deadline** (review round 3): the SDK's shutdown
deadline only stops the wait, it does not cancel work. The in-flight
request kept running past scope release and the drain then started the
queued request, keeping the runtime alive ~4s instead of 2s. A lifecycle
`AbortController` now composes into every request's signal and fires
when the deadline hits, so no request survives or starts after the scope
closes. Covered by a unit regression asserting zero active requests one
tick after release (red on the previous code) and an e2e test that runs
the compiled binary again... (continued)

11250 of 17228 relevant lines covered (65.3%)

10.51 hits per line

Coverage Regressions

Lines Coverage ∆ File
8
90.91
0.32% internal/telemetry/client.go
Jobs
ID Job ID Ran Files Coverage
1 29837593823.1 21 Jul 2026 02:12PM UTC 230
65.3
GitHub Action Run
Source Files on build 29837593823
  • Tree
  • List 230
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #29837593823
  • 3fa5a9d9 on github
  • Prev Build on develop (#29836104208)
  • Next Build on develop (#29879882632)
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