Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

stack: gateway still opens a new upstream connection per request on 2.119.0 (exhausts ephemeral ports on macOS)

未关闭
#6,987 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

@rbSparky 已经在做这个了。

开始于 2026年10月7日。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
48/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
postgresql, typescript

调研方向

Start by locating the native-runtime HTTP gateway's upstream request handling and tracing how it connects to PostgREST and Auth. Reproduce the reported Playwright contract-suite load against one local stack and inspect connection reuse and TIME_WAIT counts. Done means proxied requests reuse upstream connections and the run no longer exhausts ephemeral ports or produces the reported transient failures.

由索引模型根据 Issue 内容生成。

描述

🐛 Bug open-for-contribution supabase/cli
Summary

On CLI 2.119.0 (which contains #6925, the fix for #6922), the native-runtime HTTP gateway still opens a new upstream TCP connection per proxied request to PostgREST and Auth. Under a test suite's load this exhausts macOS's ephemeral port range within a single run. Requests then fail with Bad Gateway, fetch failed, and Auth's failed to connect … connect: can't assign requested address.

Environment
  • Supabase CLI 2.119.0 (Homebrew), [experimental] stack = true, native runtime
  • macOS 26.6.2, Apple silicon. Ephemeral range 49152–65535, net.inet.tcp.msl=15000.
  • Slim services from the stack cache: PostgREST v16.4-r0, Auth v2.197.0-r0 (darwin-arm64)
Reproduction

A Playwright contract suite of about 1,160 tests (2 workers, supabase-js clients, mostly RPC calls and auth.admin.createUser) run against one local stack. It takes about 40s.

Evidence

TIME_WAIT sockets, sampled every 2s through a single run that started from a drained machine (6 sockets): peak 16,309, effectively the entire ephemeral range.

Grouped by destination port, about 25s into a run:

Destination Listener TIME_WAIT
64008 postgrest/v16.4-r0/.../.postgrest-wrapped 8,547
24782 stack Postgres (database.sql) 4,180
63992 auth/v2.197.0-r0/.../.auth-wrapped 693
23647 the public gateway (client side) 433

So the client-to-gateway hop reuses connections (433), while the gateway-to-PostgREST and gateway-to-Auth hops do not. The Postgres churn looks like #6981 (Auth keeps no idle connections).

Auth's log at the failure:

"error":"Unhandled server error: couldn't start a new transaction: could not create new transaction:
failed to connect to `host=127.0.0.1 user=supabase_auth_admin database=postgres`:
dial error (dial tcp 127.0.0.1:24782: connect: can't assign requested address)"

Test-visible errors: Bad Gateway on REST and Storage, fetch failed, Database error querying schema / Database error checking email from Auth. All are transient and clear once TIME_WAIT drains.

Workaround

sudo sysctl -w net.inet.tcp.msl=1000 (frees a closed port in 2s instead of 30s).

Related

#6922 (closed by #6925), #6975, #6981

主要语言
TypeScript
星标
2.4k
派生
531
平均合并
1 天 4 小时
30 天内合并 PR
346

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

supabase/cli 的其他 Issue

查看 supabase/cli 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。