From fec21ab5c58f3c1554407e9f0ac13a674b1da393 Mon Sep 17 00:00:00 2001 From: evgeny Date: Tue, 13 Oct 2026 17:27:41 +0200 Subject: [PATCH] Record live startup cancellation diagnosis and relay ownership --- doc/stream.txt | 4 ++++ doc/tasks.md | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/doc/stream.txt b/doc/stream.txt index 373884e9..62116c2f 100644 --- a/doc/stream.txt +++ b/doc/stream.txt @@ -925,6 +925,9 @@ READY будит selector и снимает старый backoff данного новые INFO/ACCEPT/READY и первый DATA/восстановленный блок будят управление без ожидания следующего тика. Все таймеры/отложенные вызовы/queue waiters отменяются до освобождения владельца. После первой действующей выдачи запрос становится BOUND; дальнейшую потребность подтверждают обычные RENEW/аренда. +Выбранная upstream-выдача CONNECTING/INFO/REQUESTED также удерживает исходящий запрос: подписанная Merkle-опция +помощника может прийти раньше STATUS READY. INFO-пробы не удерживают запрос; переход BOUND требует ACTIVE. +Отмена проигравшего запроса не должна закрывать выбранную выдачу того же помощника до её ACCEPT. Если помощь не даёт прогресса потребителя 15 секунд и набор по-прежнему недостаточен, её выдачи закрываются, selector пробует другого суперузла. Запросы/ответы не продлевают аренду raw-выдач. Состояние закрытого запроса сохраняется 60 секунд. Неуспех имеет такой же cooldown для этого суперузла; @@ -951,6 +954,7 @@ Relay-only экземпляр не запрашивает новую помощ test_stream_service проверяет отсутствие помощи при прямом успехе/паузе источника, автоматический fallback, дедлайн 100 мс, обе стороны гонки, поздние INFO/REQUEST проигравшего, ограничение ответов на повторы REQUEST и общий старт при n=8/r=2, +выбор помощника через Merkle/INFO раньше задержанного READY без преждевременной отмены выбранной выдачи, раздачу нескольким зрителям, общий owner с локальным viewer, остановку при уходе последнего, поздний повтор запроса до/после удаления tombstone, CANCEL до REQUEST, истечение READY без SUBSCRIBE, откат неуспешного добавления viewer, исключение relay-only кандидатов и передачу пустого подписанного END. diff --git a/doc/tasks.md b/doc/tasks.md index 34b424a9..e81f46e8 100644 --- a/doc/tasks.md +++ b/doc/tasks.md @@ -4,6 +4,21 @@ ## Текущие задачи +[+] **Live: выбранная выдача отменяла помощь до READY/ACCEPT** — 13.10.2026: + Первое открытие desktop 17:07:41.035 → первый кадр 17:07:44.500 заняло 3.464 с; + запрос помощи отправлен через 99 мс, первый FEC через 2.490 с, KEY ещё через 0.796 с, + prefill/показ заняли 0.178 с. Повторное открытие заняло 0.983 с. + Merkle объявил буфер colo2 до READY: selector выбирал его INFO, но отменял STARTING-запрос, + потому что выдача ещё не ACTIVE. Четыре CANCEL закрыли собственную выбранную выдачу. + Запрос теперь удерживается также выбранными CONNECTING/INFO/REQUESTED upstream; INFO-пробы, + ENDED/CLOSED и чужие downstream не удерживают его. Аренда/idle и проверки поколений сохранены. + Регрессия с задержанным READY и настоящим Merkle/ETCP воспроизводит ошибку до исправления + и проходит после него без преждевременного CANCEL и tracked allocation leaks. + На colo2 всё ещё работает 14e2cdc2: опрос субпотоков раз в 100 мс и секундная задержка STATUS. + В сохранённом запуске helper генерировал STATUS в 18:07:42.465 и 18:07:43.476; + для полного ускорения нужен новый бинарник сервера. Логи: `/tmp/stream-first3s-{desktop,colo2,sm}.log`, + `/tmp/stream-first3s-regression-{before,after}.log`, `/tmp/stream-first3s-colo2-version.log`. + [+] **Live: ускорить начальное подключение** — 13.10.2026: Дедлайн помощи 100 мс и первый пригодный INFO выбирают поставщика; DATA использует один общий старт. Управление просыпается по событиям, подтверждение поколения и новые состояния помощи не ждут 1 с.