Record live startup cancellation diagnosis and relay ownership

This commit is contained in:
evgeny committed 2026-10-13 17:27:41 +02:00
1 parent ccc9210232
commit fec21ab5c5
2 files changed
+19

No files matched your search

+4
View File
@@ -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.
+15
View File
@@ -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 с.