Browse Source

Document callback-driven supplier discovery and verification

master
evgeny 6 days ago
parent
commit
3f6cc5da52
  1. 7
      doc/stream.txt
  2. 13
      doc/tasks.md
  3. 2
      src/stream/stream_optimizer.h

7
doc/stream.txt

@ -920,6 +920,12 @@ Bootstrap ограничен 15 секундами с первого запро
проверяются INFO/ACCEPT/DATA. Переход к READY даёт отдельные 5 секунд для SUBSCRIBE. проверяются INFO/ACCEPT/DATA. Переход к READY даёт отдельные 5 секунд для SUBSCRIBE.
READY будит selector и снимает старый backoff данного пира. Подтверждённый поставщик временно допускается READY будит selector и снимает старый backoff данного пира. Подтверждённый поставщик временно допускается
и выборкой кандидатов, и receive_open, независимо от задержки его Merkle-опции. и выборкой кандидатов, и receive_open, независимо от задержки его Merkle-опции.
Callback принятых свойств участника Merkle/BGP помечает roster нужного канала устаревшим. Сверка выполняется
отложенно после проверки членства/эпох; несколько callbacks объединяются. Новый совместимый кандидат запускает
INFO без ожидания секундного расписания, а существующие пробы/цикл и backoff ошибок не сбрасываются.
Если новый буфер ещё заполняется и INFO latest отвергнут с POSITION, повторный обход допускается через 100 мс
в пределах фиксированного окна 5 с; транспортный backoff и обычный обход 30 с сохраняются.
Периодическая сверка roster раз в секунду остаётся резервной.
Первое подтверждение поколения и переходы состояний отправляются отложенно сразу; одинаковые повторы ограничены 1 с. Первое подтверждение поколения и переходы состояний отправляются отложенно сразу; одинаковые повторы ограничены 1 с.
Объединённая работа управления выполняется после packet/NCD callbacks. Общий таймер обслуживает сроки/метрики, Объединённая работа управления выполняется после packet/NCD callbacks. Общий таймер обслуживает сроки/метрики,
новые INFO/ACCEPT/READY и первый DATA/восстановленный блок будят управление без ожидания следующего тика. новые INFO/ACCEPT/READY и первый DATA/восстановленный блок будят управление без ожидания следующего тика.
@ -955,6 +961,7 @@ Relay-only экземпляр не запрашивает новую помощ
test_stream_service проверяет отсутствие помощи при прямом успехе/паузе источника, автоматический fallback, test_stream_service проверяет отсутствие помощи при прямом успехе/паузе источника, автоматический fallback,
дедлайн 100 мс, обе стороны гонки, поздние INFO/REQUEST проигравшего, ограничение ответов на повторы REQUEST и общий старт при n=8/r=2, дедлайн 100 мс, обе стороны гонки, поздние INFO/REQUEST проигравшего, ограничение ответов на повторы REQUEST и общий старт при n=8/r=2,
выбор помощника через Merkle/INFO раньше задержанного READY без преждевременной отмены выбранной выдачи, выбор помощника через Merkle/INFO раньше задержанного READY без преждевременной отмены выбранной выдачи,
callback обнаружения поставщика без секундной паузы, повторные уведомления без лишних проб и заполнение раннего буфера,
раздачу нескольким зрителям, общий owner с локальным viewer, остановку при уходе последнего, раздачу нескольким зрителям, общий owner с локальным viewer, остановку при уходе последнего,
поздний повтор запроса до/после удаления tombstone, CANCEL до REQUEST, истечение READY без SUBSCRIBE, поздний повтор запроса до/после удаления tombstone, CANCEL до REQUEST, истечение READY без SUBSCRIBE,
откат неуспешного добавления viewer, исключение relay-only кандидатов и передачу пустого подписанного END. откат неуспешного добавления viewer, исключение relay-only кандидатов и передачу пустого подписанного END.

13
doc/tasks.md

@ -4,6 +4,19 @@
## Текущие задачи ## Текущие задачи
[+] **Live: callback обнаружения поставщиков** — 13.10.2026:
Принятые изменения Merkle и BGP помечают roster оптимизаторов соответствующего канала устаревшим.
Сверка/пробы выполняются после callback одним объединённым отложенным проходом в uasync.
Новый доступный поставщик опрашивается сразу; существующие пробы, цикл и backoff ошибок сохраняются.
Временно пустой буфер повторно опрашивается через 100 мс в пределах фиксированных 5 с,
чтобы ранняя подписанная опция не оставляла недостающие субпотоки до обхода через 30 с.
Регрессия с настоящим Merkle/BGP и задержанным READY: до исправления проверка задержки падала,
после принятого объявления INFO получен через 6 мс. Повторные callbacks не размножают пробы;
общий старт 8/2 и освобождение всех tracked allocations проверены.
149 тестов ядра, 43 Android-теста и desktop stream/audio timing прошли; GUI и APK собраны.
Логи: `/tmp/stream-provider-callback-{before,retry,full-check}.log`,
`/tmp/stream-provider-callback-{gui-tests,android-build}.log`.
[+] **Live: выбранная выдача отменяла помощь до READY/ACCEPT** — 13.10.2026: [+] **Live: выбранная выдача отменяла помощь до READY/ACCEPT** — 13.10.2026:
Первое открытие desktop 17:07:41.035 → первый кадр 17:07:44.500 заняло 3.464 с; Первое открытие desktop 17:07:41.035 → первый кадр 17:07:44.500 заняло 3.464 с;
запрос помощи отправлен через 99 мс, первый FEC через 2.490 с, KEY ещё через 0.796 с, запрос помощи отправлен через 99 мс, первый FEC через 2.490 с, KEY ещё через 0.796 с,

2
src/stream/stream_optimizer.h

@ -1,5 +1,5 @@
/* Один планировщик на локальный экземпляр; handles владельцев не размножают пробы/выдачи. /* Один планировщик на локальный экземпляр; handles владельцев не размножают пробы/выдачи.
* tick вызывается общим stream network timer, destroy отменяет все свои receive/probe handles. */ * tick вызывается отложенным stream network проходом и таймером, destroy отменяет все свои receive/probe handles. */
#ifndef STREAM_OPTIMIZER_H #ifndef STREAM_OPTIMIZER_H
#define STREAM_OPTIMIZER_H #define STREAM_OPTIMIZER_H

Loading…
Cancel
Save