fix(shluzd): dynamic subscription polling and transactional persistence #1

Open
forgejo-admin wants to merge 1 commit from fix/subscription-polling into main

Изменения

  • Добавление/удаление подписок и смена интервала без restart; recovery после потери событий; защита от zero-interval busy loop.
  • Дренирование periodic refresh при удалении/остановке.
  • Сохранение candidate под общей блокировкой; память/events обновляются только после успешного save.
  • Final shutdown save сериализован той же блокировкой.
  • Повторный аудит: docs/audit-limitations.md.

Проверки в CT113

  • cargo test --locked --workspace: 378 passed, 0 failed (8 новых тестов).
  • python3 -m unittest discover -s ci -p 'test_*.py' -v: 94 passed.
  • cargo clippy --locked --workspace --all-targets: exit 0; existing warnings remain.
  • git diff --check: clean.
  • RED/GREEN: startup-only polling, captured interval, failed persistence и concurrent save collisions воспроизведены до исправлений.

Не закрыто / границы

  • Ручным refresh/ping нужен общий shutdown task tracking.
  • Лимит/валидация subscription body и stale concurrent responses требуют следующего блока.
  • RPC stubs, IPv6/kill-switch/old-socket ограничения и Arch/AUR/licensing gates остаются.
  • VM dataplane tests и независимый review не выполнялись. Только локальный self-review.
  • Deploy, merge и host nftables/cgroup mutations не выполнялись.

Generated with assistance from an AI agent.

## Изменения - Добавление/удаление подписок и смена интервала без restart; recovery после потери событий; защита от zero-interval busy loop. - Дренирование periodic refresh при удалении/остановке. - Сохранение candidate под общей блокировкой; память/events обновляются только после успешного save. - Final shutdown save сериализован той же блокировкой. - Повторный аудит: docs/audit-limitations.md. ## Проверки в CT113 - cargo test --locked --workspace: **378 passed**, 0 failed (8 новых тестов). - python3 -m unittest discover -s ci -p 'test_*.py' -v: **94 passed**. - cargo clippy --locked --workspace --all-targets: exit 0; existing warnings remain. - git diff --check: clean. - RED/GREEN: startup-only polling, captured interval, failed persistence и concurrent save collisions воспроизведены до исправлений. ## Не закрыто / границы - Ручным refresh/ping нужен общий shutdown task tracking. - Лимит/валидация subscription body и stale concurrent responses требуют следующего блока. - RPC stubs, IPv6/kill-switch/old-socket ограничения и Arch/AUR/licensing gates остаются. - VM dataplane tests и независимый review не выполнялись. Только локальный self-review. - Deploy, merge и host nftables/cgroup mutations не выполнялись. Generated with assistance from an AI agent.
This pull request has changes conflicting with the target branch.
  • crates/shluzd/src/main.rs
View command line instructions

Manual merge helper

Use this merge commit message when completing the merge manually.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin fix/subscription-polling:fix/subscription-polling
git switch fix/subscription-polling

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff fix/subscription-polling
git switch fix/subscription-polling
git rebase main
git switch main
git merge --ff-only fix/subscription-polling
git switch fix/subscription-polling
git rebase main
git switch main
git merge --no-ff fix/subscription-polling
git switch main
git merge --squash fix/subscription-polling
git switch main
git merge --ff-only fix/subscription-polling
git switch main
git merge fix/subscription-polling
git push origin main
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
forgejo-admin/shluz!1
No description provided.