Document committed outbox retries and transaction-safe preparation recovery

This commit is contained in:
evgeny committed 2026-10-27 03:20:41 +01:00
1 parent 0995a1eac3
commit 8fefd510a6
2 files changed
+14 -1

No files matched your search

+13
View File
@@ -168,6 +168,17 @@ SQL-ошибка сохраняет все записи и файлы; сете
Если rollback не закрыл собственную транзакцию, таймер не запускается повторно:
модуль снимается и владелец останавливает ядро после poll.
Перед каждой сетевой попыткой очередь собственной транзакцией проверяет команду и
фиксирует `retry_at=now+5с`. Только после commit выполняются проверка допуска и сеть;
SQL-отказ сохраняет команду/дату и не отправляет пакет. За проход обрабатываются до16
команд, периодический tick —10с. Пустая очередь освобождает свою транзакцию без
вызова commit hook. Отсутствие маршрута, backpressure и отказ отправки сохраняют очередь.
Очистка неподтверждённых подготовок выполняется до workers и после их завершения.
Если SQLite-транзакция открыта, весь recovery откладывается, файлы сохраняются:
незакоммиченное удаление истории не доказывает отсутствие публикации. Инициализация
модуля также отклоняет внешнюю транзакцию до изменения таблиц/таймера/сети.
В шапке desktop-клиента кнопка «Запросы расшифровки» видна при наличии запросов без решения
и показывает их число.
Список содержит участника, вложение, дату и отдельные кнопки выдачи/отказа.
@@ -273,6 +284,8 @@ prepare/bind/step/finalize удаления метаданных; дополни
Дополнительные проверки:13 SQL-отказов привязки авторской пары,25 наблюдения новой/существующей
идентичности и60 операций wanted/downloaded. Сверяются все поля через независимый reader,
в том числе в событии; старые ключи/метаданные/соседняя запись сохраняются.
Открытое удаление истории при shutdown сохраняет опубликованные файлы; rollback и
restart восстанавливают прежний снимок. Внешняя транзакция также запрещает повторный init.
Проверяются канонический UUID,коллизия/внешняя транзакция/commit veto/ABORT/IGNORE,
повторная ошибка в отделённом batch,восстановление при startup без сети и17 каналов
с fallback после заполнения очереди16. Ручной обработчик передаёт все23 подписанных