Cover paused sources and duplicate relay controls during startup
This commit is contained in:
1 parent
8206e53b5c
commit
eda8dfbc91
3 files changed
+46
-7
No files matched your search
+15
-4
@@ -882,8 +882,14 @@ test_stream_service также проверяет общий каталог дв
|
||||
|
||||
21. Суперузлы: помощь в раздаче по запросу
|
||||
|
||||
Сам старт публикации не запускает приём на суперузлах. Selector зрителя запрашивает помощь после 5 секунд
|
||||
недостатка действующих субпотоков для k=n-r. Для остановившихся выдач требуется также свидетельство более свежих данных;
|
||||
Сам старт публикации не запускает приём на суперузлах. Новая подписка сразу запускает INFO-пробы и отдельный
|
||||
дедлайн 100 мс. Если пригодного ответа ещё нет, запрашивается один суперузел. Первый валидный INFO с разрешённой
|
||||
выдачей выигрывает: порядок приёма фиксируется локальным счётчиком, независимо от RTT и порядка списка кандидатов.
|
||||
Проигравшие пробы и неподключённая помощь отменяются. DATA сначала открывается только у победителя; проверенный
|
||||
первый блок фиксирует общий старт всех остальных субпотоков. До первого восстановления FEC выбирается победитель,
|
||||
затем действует обычный оптимизатор. Пустой доступный источник не требует помощи, пока он не публикует данные.
|
||||
Для восстановления работающего потока сохраняются 5 секунд недостатка действующих субпотоков для k=n-r.
|
||||
Для остановившихся выдач требуется также свидетельство более свежих данных;
|
||||
пауза источника, отсутствие полной FEC-защиты и недобор всех n сами по себе не запускают помощь.
|
||||
Выбирается один онлайн-суперузел данной CHAT-группы с допустимой NCD-попыткой; после неуспеха пробуется следующий.
|
||||
Канальная роль берётся из принятого блока владельца adm_tags.supernode, не из client_type/storage/node_type.
|
||||
@@ -906,11 +912,15 @@ STATUS: state:1,reason:1,remaining_ms:4; для ENDED дополнительно
|
||||
Состояния: STARTING=1, READY=2, BOUND=3, REJECTED=4, ENDED=5, CANCELLED=6.
|
||||
ENDED в ответе помощи разрешён только для пустого источника (last_seq=UINT64_MAX) и проверяется ключом источника.
|
||||
|
||||
Bootstrap ограничен 15 секундами с первого запроса, повторы срок не продлевают. READY означает наличие
|
||||
реальных блоков хотя бы одного субпотока с допустимым путём к запросившему; окончательные индекс/путь/FEC
|
||||
Bootstrap ограничен 15 секундами с первого запроса, повторы срок не продлевают. READY означает восстановление
|
||||
первой FEC-пачки и наличие реальных блоков с допустимым путём к запросившему; окончательные индекс/путь/FEC
|
||||
проверяются INFO/ACCEPT/DATA. Переход к READY даёт отдельные 5 секунд для SUBSCRIBE.
|
||||
READY будит selector и снимает старый backoff данного пира. Подтверждённый поставщик временно допускается
|
||||
и выборкой кандидатов, и receive_open, независимо от задержки его Merkle-опции.
|
||||
Первое подтверждение поколения и переходы состояний отправляются отложенно сразу; одинаковые повторы ограничены 1 с.
|
||||
Объединённая работа управления выполняется после packet/NCD callbacks. Общий таймер обслуживает сроки/метрики,
|
||||
новые INFO/ACCEPT/READY и первый DATA/восстановленный блок будят управление без ожидания следующего тика.
|
||||
Все таймеры/отложенные вызовы/queue waiters отменяются до освобождения владельца.
|
||||
После первой действующей выдачи запрос становится BOUND; дальнейшую потребность подтверждают обычные RENEW/аренда.
|
||||
Если помощь не даёт прогресса потребителя 15 секунд и набор по-прежнему недостаточен, её выдачи закрываются,
|
||||
selector пробует другого суперузла. Запросы/ответы не продлевают аренду raw-выдач.
|
||||
@@ -937,6 +947,7 @@ Relay-only экземпляр не запрашивает новую помощ
|
||||
Отказы по роли, эпохе, лимитам, таймауту и перегрузке диагностируются с причиной.
|
||||
|
||||
test_stream_service проверяет отсутствие помощи при прямом успехе/паузе источника, автоматический fallback,
|
||||
дедлайн 100 мс, обе стороны гонки, поздние INFO/REQUEST проигравшего, дубликаты STATUS и общий старт при n=8/r=2,
|
||||
раздачу нескольким зрителям, общий owner с локальным viewer, остановку при уходе последнего,
|
||||
поздний повтор запроса до/после удаления tombstone, CANCEL до REQUEST, истечение READY без SUBSCRIBE,
|
||||
откат неуспешного добавления viewer, исключение relay-only кандидатов и передачу пустого подписанного END.
|
||||
@@ -4,6 +4,14 @@
|
||||
|
||||
## Текущие задачи
|
||||
|
||||
[ ] **Live: ускорить начальное подключение** — 13.10.2026:
|
||||
Дедлайн помощи 100 мс и первый пригодный INFO выбирают поставщика; DATA использует один общий старт.
|
||||
Управление просыпается по событиям, подтверждение поколения и новые состояния помощи не ждут 1 с.
|
||||
READY требует восстановленной FEC-пачки. Регрессии: прямой/relay победитель, поздние ответы,
|
||||
отмена до дедлайна, пустой источник, дубликаты, общий индекс 8/2 и освобождение ресурсов.
|
||||
Начальная очередь аудио прогревает Opus и обрезается по первому KEY; prefill 150 мс начинается после него.
|
||||
Выполняется общая проверка ядра, desktop и APK. Контракт: `doc/stream.txt`, раздел 21.
|
||||
|
||||
[+] **Live: сквозное стерео и три компактные кнопки поворота** — 13.10.2026:
|
||||
CAMCORDER/Opus/компрессор/Android AudioTrack/desktop output используют два канала,
|
||||
Opus AUDIO 128kbps. audio_codec=2 обозначает stereo; 960 кадров на канал дают 1920 PCM-отсчётов.
|
||||
|
||||
Reference in new issue
Block a user