{"id":"IL-0307","org":"Supabase","date":"2025-01-29","docs":[],"title":{"en":"Supabase's Postgres connection pooler Supavisor 2.0 dropped connections for about 80% of us-east-1 tenants","ko":"Supabase us-east-1 에서 Supavisor 2.0 업그레이드 뒤 Postgres 연결 풀러가 테넌트 약 80% 의 연결을 끊었다"},"domain":["database"],"impact":{"scope":"Postgres connections through the Supavisor pooler and Supabase Storage connectivity in us-east-1","users":"about 80% of tenants in us-east-1","region":"us-east-1"},"review":{"written_by":"session","reviewed_at":null,"reviewed_by":null},"lessons":{"en":"Rollback was too slow and the pooler was not resilient enough to unforeseen failures under load; future work focuses on faster rollbacks to reduce the impact of similar failed deployments.","ko":"Supabase 는 이 장애로 롤백이 느리고, 부하가 걸린 상태에서 예상하지 못한 장애를 견디는 힘이 약하다는 점이 드러났다고 밝혔다. 앞으로 비슷한 배포 실패의 영향을 줄이려고 롤백 효율을 높이는 데 집중한다고 썼다."},"related":[],"sources":[{"url":"https://status.supabase.com/incidents/zk493yyz17hy","kind":"official-status","archived":"https://web.archive.org/web/20251106211549/https://status.supabase.com/incidents/zk493yyz17hy"}],"summary":{"en":"Supavisor manages Postgres connections for Supabase. Supabase scheduled a major upgrade to Supavisor 2.0 across 10 regions; the new version had already run in 9 smaller regions over the previous weeks. On January 29, 2025 the maintenance began at 13:00 UTC and Supavisor 2.0 was deployed to 9 regions with minimal downtime, needing only client connection restarts. The us-east-1 deployment completed at 14:46 UTC with clients reconnected and throughput stable. At 16:05:50 UTC an :ets.select_delete operation failed and corrupted an ETS table; process registry lookups in Syn and Cachex that rely on it began failing, and at 16:06:00 UTC the processes managed by the registry crashed, dropping connections for about 80% of tenants. The incident was declared at 16:11 UTC and a rollback started. It completed at 16:53 UTC, and the previous version restored normal operation. During the incident Supabase advised users to fall back to direct database connections.","ko":"Supabase 는 Postgres 연결 풀러인 Supavisor 를 10개 리전에서 2.0 으로 올리는 메이저 업그레이드를 계획했다. 새 버전은 쿼리 지연과 가용 영역 인식이 나아진 버전이었고, 지난 몇 주 동안 더 작은 9개 리전에 문제없이 배포되었다. 2025년 1월 29일 13:00 UTC 에 유지보수가 시작되어 9개 리전에 배포되었고, 클라이언트 연결을 다시 맺는 것 말고는 중단이 거의 없었다. 14:46 UTC 에 us-east-1 배포도 끝났고 클라이언트가 다시 연결되어 처리량이 안정되었다.\n\n16:05:50 UTC 에 :ets.select_delete 작업이 실패하며 ETS 테이블이 손상되었다. 16:05:56 UTC 부터 Syn 과 Cachex 라이브러리에서 ETS 를 쓰는 프로세스 레지스트리 조회가 실패해 테넌트가 다시 연결하지 못했다. 16:06:00 UTC 에는 이 레지스트리가 관리하던 프로세스들이 죽어 테넌트 약 80% 의 연결이 끊겼다. 16:11 UTC 에 장애를 선언하고 이전 Supavisor 버전으로 롤백을 시작했다. 롤백은 16:53 UTC 에 끝났고 이전 안정 버전으로 정상 동작이 돌아왔다. 장애는 1시간쯤 이어졌다."},"trigger":{"en":"The planned upgrade of Supavisor to version 2.0 in us-east-1, which completed at 14:46 UTC.","ko":"us-east-1 에 Supavisor 2.0 으로 올리는 메이저 업그레이드를 배포한 뒤, :ets.select_delete 작업이 실패해 ETS 테이블이 손상되었다."},"severity":"unknown","symptoms":["connection-resets","intermittent-connection-failures"],"timeline":{"detected_after":"6m","resolved_after":"48m"},"date_kind":"incident","detection":null,"components":["database-proxy","database"],"root_cause":"deploy-rollout","remediation":[{"text":{"en":"Rolled Supavisor back to the previous version","ko":"16:11 UTC 에 이전 Supavisor 버전으로 롤백을 시작했고, 16:53 UTC 에 롤백이 끝나 이전 안정 버전으로 정상 동작이 돌아왔다."}}],"action_items":[{"text":{"en":"Cut rollback time from 40 minutes to under 90 seconds","ko":"롤백 시간을 40분에서 90초 안으로 줄인다."}},{"text":{"en":"Detect client disconnections within 2 minutes","ko":"클라이언트 연결이 끊기는 것을 2분 안에 잡도록 알림을 고친다."}}],"contributing":[],"recurrence_of":null,"symptoms_text":{"en":"At 16:05 UTC on January 29, 2025, most clients connected through Supavisor, Supabase's Postgres connection pooler, in us-east-1 were disconnected and could not reconnect reliably. Connections dropped for about 80% of tenants, and Supabase Storage connectivity also failed until the pooler was fixed.\n\nInside Supavisor 2.0, an :ets.select_delete operation failed at 16:05:50 UTC and corrupted an ETS (Erlang Term Storage) table. From 16:05:56 UTC, process registry lookups in the Syn and Cachex libraries, which are backed by ETS, failed and kept tenants from reconnecting, and at 16:06:00 UTC the processes managed by that registry crashed.","ko":"2025년 1월 29일 16:05 UTC 에 us-east-1 의 Supavisor 클라이언트 대다수가 연결이 끊겼고 다시 연결하는 데 자꾸 실패했다. Supavisor 는 Postgres 연결을 관리하는 연결 풀러다. Supabase Storage 연결도 함께 문제를 겪었다.\n\nus-east-1 배포는 14:46 UTC 에 끝났고, 그때는 클라이언트가 다시 연결되고 처리량도 안정되어 있었다. 한 시간 넘게 지난 16:05:50 UTC 에 :ets.select_delete 작업이 실패하며 ETS 테이블이 손상되었다. ETS 는 Erlang Term Storage 다. 16:05:56 UTC 부터 Syn 과 Cachex 라이브러리에서 ETS 를 쓰는 프로세스 레지스트리 조회가 실패해 테넌트가 다시 연결하지 못했다. 16:06:00 UTC 에 이 레지스트리가 관리하던 프로세스들이 죽으면서 테넌트 약 80% 의 연결이 끊겼다.\n\n조사 중에 Supabase 는 데이터베이스 연결은 당분간 직접 연결로 바꿔 쓰라고 안내했다. Storage 연결은 연결 풀러 문제가 풀려야 돌아온다고 알렸다."},"updated_at":"2026-11-14T12:33:56.123258Z","url":"https://benchlet.com/incidentlib/app/cases/IL-0307","org_slug":"supabase"}