fix: remove worker mutex and increase collab timeout to 120s #11
Reference in New Issue
Block a user
Delete Branch "fix/remove-worker-mutex-increase-timeout"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problema
Al escribir páginas largas vía WebSocket, el servidor sufría timeouts por dos causas:
workerBusyensrc/index.ts: cada worker procesaba 1 request a la vez en cola. Si una request lenta (escritura de página grande) ocupaba el worker, la siguiente esperaba en cola y podía expirar antes de ser atendida.collaboration.ts: para páginas grandes, el sync inicial de Hocuspocus (Yjs) puede superar fácilmente los 25 s, causando un rechazo prematuro.Solución
1. Eliminar el mutex (
src/index.ts)StreamableHTTPServerTransportes stateless — se crea uno por request. No hay estado compartido entre requests concurrentes dentro del mismo worker, por lo que el mutex era innecesario. Al eliminarlo, cada worker puede atender múltiples requests en paralelo sin starvation.2. Aumentar el timeout de colaboración (
src/lib/collaboration.ts)El timeout de seguridad sube de 25 s → 120 s, dando tiempo suficiente a documentos grandes para completar la fase de sync de Yjs antes del abort.
Impacto
clustercomparte el puerto 8080 vía IPC del master).