Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Server exits with "storage writer lease was not renewed before its safety deadline" under light load

Fechada
#486 0 comentários 0 reações 1 responsável Ver no GitHub

Mantenedores costumam responder em até 1 dia

@lavaman131 já está trabalhando nisso.

Desde 12/10/2026.

  • #487 de @lavaman131 — aberto

Avaliação

Esta issue ainda não foi avaliada.

Descrição

What happened

A self-hosted Chopin server (Postgres storage, HARNESS=remote, running in Docker with restart: unless-stopped) exited on its own and was restarted by Docker:

2026-10-12T00:45:06.381Z chopin: storage writer lease was not renewed before its safety deadline
2026-10-12T00:45:07.642Z chopin: postgres storage is up to date
2026-10-12T00:45:08.628Z chopin  ·  http://0.0.0.0:8787  ·  … harness: remote … storage: postgres

docker inspect: StartedAt=2026-10-12T00:45:07.42Z, RestartCount=1, ExitCode=0, OOMKilled=false. No other error was logged before the exit.

Effects: every open WebSocket (rooms, /planner-link) closed with 1006 at the same moment. Attached Planner clients reconnected after the restart, but their in-flight turns failed, and attachments were released.

Context

  • Server at main 518bd44 (Atomic 0.9.34), on a 16-vCPU VM. The database is an Azure PostgreSQL Flexible Server (zone-redundant HA) on the same VNet.
  • Load was light: one attached Planner client actively streaming a turn (about 700 KB queued on its socket at the time) and one browser.
  • The message comes from the writer-lease watchdog in apps/server/src/main.ts, which exits when a lease renewal hasn't completed before its safety deadline.

Questions / expected

  • What can delay a lease renewal past its deadline under light load? For example, event-loop blocking while serializing large Planner-link frames, a slow or stalled Postgres round-trip, or a renewal request that hangs with no timeout.
  • Expected: a transient renewal delay shouldn't take the whole server down when no other writer exists. Or, if exiting is the safe choice, it should log the renewal's last success time, how late it was, and the failing query or error, so the cause can be diagnosed.
Linguagem predominante
TypeScript
Estrelas
406
Forks
24
Merge médio
12h 42min
PRs com merge (30d)
416

Preparar o ambiente

  • Inclui um Dockerfile ou arquivo Docker Compose
  • Sem modelo de pull request
  • Sem guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de githubnext/chopin

Todas as issues de githubnext/chopin

Issues semelhantes

Mais issues de TypeScript

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.