Describe DM expiry reconciliation and await restarted test link
This commit is contained in:
1 parent
59e694bd83
commit
9fe4e834fe
2 files changed
+17
-2
No files matched your search
+16
-2
@@ -175,8 +175,8 @@ TTL текстовых сообщений не введён; недельный
|
||||
3. Суперузел сначала durable регистрирует сообщение и media job, затем выбирает M.
|
||||
M скачивает ciphertext у A и сообщает S подтверждённое хранение, место и expiry.
|
||||
4. Текстовая квитанция и квитанция медиа независимы. Получатель подтверждает медиа
|
||||
после проверки, публикации файла и commit. S хранит задачу удаления у M до DELETE_ACK;
|
||||
поздний STORED не возрождает завершённую доставку.
|
||||
после проверки, публикации файла и commit. S хранит задачу удаления у M до DELETE_ACK
|
||||
либо завершения подтверждённого TTL назначения; поздний STORED не возрождает доставку.
|
||||
5. TTL медиа `dm_media_ttl_sec` по умолчанию 604800 с; квота `dm_media_storage_mb`
|
||||
по умолчанию 1024 МиБ. Настройки на M. Новая custody отклоняется при
|
||||
недостатке квоты; уже подтверждённые копии не вытесняются молча раньше срока.
|
||||
@@ -190,6 +190,16 @@ TTL текстовых сообщений не введён; недельный
|
||||
вызывает `REJECT` и выбор другого M. Исправление и регрессии:
|
||||
[dm_audit_findings.txt](dm_audit_findings.txt), раздел6.
|
||||
|
||||
Освобождение назначения на S по EXPIRED/REJECT и сброс текущего holder выполняются
|
||||
в одной транзакции. Ошибка prepare/bind/step/finalize/commit откатывает оба изменения.
|
||||
Подтверждённое назначение завершается также таймером по сохранённому expires:
|
||||
потерянный EXPIRED и offline B не оставляют stored/holder навсегда. После restart
|
||||
таймер берёт те же durable факты. Если STORE ещё не подтверждён, S продолжает повторять
|
||||
его; M возвращает STORED/EXPIRED из custody/tombstone. Квитанция B сохраняет приоритет
|
||||
над TTL; старый control другого M не сбрасывает новое текущее назначение.
|
||||
Текстовая история, подписи и сроки хранения M этим переходом не меняются.
|
||||
Подробности и регрессии: [dm_audit_findings.txt](dm_audit_findings.txt), раздел11.
|
||||
|
||||
Control `ETCP_RT_ID_DM_MEDIA=0x38`: OFFER, STORE, STORED, RECEIPT, DELETE,
|
||||
DELETE_ACK, EXPIRED, REJECT; точные форматы заданы в `dm_media.h` и реализациях owners.
|
||||
Подпись router обязательна. Media receipt содержит `DMFILE01`, conv, seq, author,
|
||||
@@ -264,6 +274,10 @@ SQL rollback регистрации, состояния JSON и отмена о
|
||||
при подсчёте места, отсутствие REJECT/STORED и SQL-записей при ошибке; три сбоя
|
||||
в первых трёх STORE, успешный четвёртый STORE на том же M и последующая доставка
|
||||
после restart. Проверка настоящей квоты требует один REJECT до регистрации custody.
|
||||
Дополнительно — 18 отказов освобождения EXPIRED/REJECT: prepare/bind/step/finalize
|
||||
обоих UPDATE и commit, точный rollback назначения/job, успешный повтор, дубликат
|
||||
и поздний STORED. Сетевой сценарий теряет EXPIRED, блокирует SQL-сброс, перезапускает S
|
||||
и проверяет восстановление из сохранённого expires, состояние M и отсутствие ложной квитанции.
|
||||
|
||||
`test_dm_worker`: повторное шифрование 8 МиБ не менее 0,5 с и проверка расшифровки;
|
||||
work выполняется вне uasync, done в его потоке, heartbeat продолжает работать.
|
||||
|
||||
Reference in new issue
Block a user