Record verified outgoing, completion and channel deletion fixes
This commit is contained in:
1 parent
618f6ca073
commit
6803369a13
2 files changed
+118
No files matched your search
@@ -945,3 +945,90 @@ PASS:/tmp/attachment-outgoing-profile.log и /tmp/attachment-outgoing-profile-lo
|
||||
и документация DM сохранены без конфликтов;native runtime в upstream не менялся.
|
||||
После merge Android assembleDebug PASS:/tmp/attachment-request-fix-merge-android-build.log.
|
||||
Merge и проверенный REQUEST fix отправлены в origin обычным push8a0654e5.
|
||||
|
||||
Завершение файлов — 27.10.2026, runtime4d19de7c/b71c3040
|
||||
|
||||
Захват расшифровки теперь проверяет prepare/три bind/step/changes1/finalize и commit
|
||||
до worker. Файл принадлежит списку instance до окончания записи результата;
|
||||
лимит16 включает workers и завершения,ожидающие SQLite. Completion владеет своей
|
||||
транзакцией,различает отсутствующую запись и ошибку lookup,проверяет все SQL-этапы
|
||||
метаданных/ready либо error. На SQL-отказе задача остаётся в списке до следующего tick,
|
||||
криптография не повторяется. Внешняя транзакция остаётся нетронутой. Событие/публикация
|
||||
следуют после commit. При stop после media_async_destroy освобождаются также ожидающие
|
||||
завершения;delete отменяет их по отсутствию строки,rollback fault запрашивает stop.
|
||||
Секреты очищаются при окончательном освобождении. Wire не менялся.
|
||||
|
||||
test_chat_attachment:9 SQL-отказов claim,15 успешного completion,8 записи ошибки
|
||||
настоящего worker с недоступным контейнером;ABORT/IGNORE,настоящий commit veto,
|
||||
внешняя транзакция,удаление канала/stop/restart с ожидающим результатом,rollback fault.
|
||||
Readonly reader проверяет точные key/info/type/ready/decrypting/error до worker и
|
||||
в событии. Повтор completion сохраняет один worker;plaintext сверяется побайтно.
|
||||
16 авторских workers действительно шифруют файлы,их завершения задерживаются отказом
|
||||
lookup. Семнадцатая отправка не принимается и сохраняет source;снятие отказа публикует
|
||||
все16 ровно по одному разу. Баланс выделений восстановлен.
|
||||
|
||||
Отдельный отрицательный стенд собран со старой согласованной sanitizer-libutun и
|
||||
headers из /tmp/utun-grant-key-sanitizers до обновления этой копии. Настоящая публикация
|
||||
и расшифровка,один bind NOMEM при записи info. Reader в событии увидел ready1,
|
||||
decrypting0,error0,info_bytes0,key_bytes32,autocommit1:подтверждён ложный успех.
|
||||
Ожидаемый exit1,defects1,баланс выделений восстановлен,ASAN/UBSan/LSan ошибок нет.
|
||||
Бинарник:/tmp/attachment-jobs-negative,исходник/.mk рядом;полный короткий лог:
|
||||
/tmp/attachment-jobs-negative.log,сборка:/tmp/attachment-jobs-negative-build.log.
|
||||
Рабочая копия для отрицательного запуска не менялась. Профиль native7/7 PASS:
|
||||
/tmp/attachment-jobs-profile.log и /tmp/attachment-jobs-profile-logs.
|
||||
|
||||
Первый расширенный sanitizer-профиль7/8 обнаружил ошибку самой фикстуры:после restart
|
||||
отказ COMMIT/ROLLBACK мог попасть в фоновый hash commit db_sync вместо completion.
|
||||
Лог:/tmp/attachment-jobs-asan-logs/test_chat_attachment.log. Транзакции completion
|
||||
помечены SQL-комментарием назначения,инъекции привязаны к ним;commit veto также
|
||||
относится только к нужному callback. Повторный итоговый профиль16/16 PASS ниже.
|
||||
|
||||
Удаление канала — 27.10.2026, runtimecd6ca238/6a6f8db2/c3ac2059
|
||||
|
||||
До исправления chat_core_delete_channel удалял ключи,plaintext и ciphertext раньше
|
||||
метаданных канала. Постоянная регрессия с настоящим BEFORE DELETE channels ABORT
|
||||
показала reader_keys2 вместо3,plaintext_bytes-1,event0 при сохранённом канале.
|
||||
Ожидаемый assert:/tmp/attachment-delete-negative.log;это отдельный подтверждённый
|
||||
дефект удаления,не падение штатного сценария. Сетевые ресурсы уже были отменены.
|
||||
|
||||
Модуль устанавливает attachment_channel_delete AFTER DELETE channels:ключи,запросы
|
||||
и outbox удаляются той же SQLite-транзакцией. Проверка полного каскада отклоняет
|
||||
также RAISE(IGNORE),не позволяя сохранить часть локальных записей. Низкоуровневое
|
||||
удаление проверяет finalize и отсутствие channels/Merkle после DELETE;savepoint
|
||||
откатывает в том числе DROP TABLE. Внешняя транзакция у этого низкого API сохраняется,
|
||||
но chat_core_delete_channel отклоняет её до отмены ресурсов. Неуспешный rollback
|
||||
с открытой БД отключает attachment и запрашивает stop/закрытие владельцем после poll.
|
||||
NULL instance не разыменовывается. Новые форматы сети не вводились,БД получила trigger.
|
||||
|
||||
После commit выполняются media_index cleanup и очистка собственных канонических
|
||||
decrypted/channel/UUID.file. Другие имена,подкаталоги и temp сохраняются. I/O-отказ
|
||||
логируется и допускает повтор очистки;он не возвращает канал после commit.
|
||||
SQL-отказ сохраняет записи и файлы,но сетевые ресурсы уже могут быть отменены —
|
||||
повтор команды завершает удаление. Completion активного worker сам убирает свой
|
||||
результат,увидев отсутствие строки. Утверждение об общей транзакции ФС/БД не вводится.
|
||||
|
||||
test_chat_attachment:14 отказов — ABORT/IGNORE channels/keys/requests/outbox/Merkle
|
||||
и prepare/bind/step/finalize DELETE channels. Дополнительно настоящий commit veto,
|
||||
внешняя транзакция с сохранением маркера и rollback fault с остановкой/закрытием БД.
|
||||
Reader на отказе видит точные key/info/type/request/state/created/command/retry и
|
||||
историю/производный Merkle namespace. Файлы сохраняются. В единственном событии
|
||||
CHANNEL_DELETED reader уже видит отсутствие всех шести объектов. Соседние ключи
|
||||
сохраняются,повтор успешен,баланс выделений восстановлен. Native профиль9/9 PASS:
|
||||
/tmp/attachment-delete-profile.log,/tmp/attachment-delete-profile-logs.
|
||||
|
||||
Общая проверка последующих исправлений — HEAD618f6ca0
|
||||
|
||||
./build.sh --no-gui PASS;./check.sh212/212 PASS,0 skipped,proxy9/9,burst1/1,load8/8,
|
||||
134217728байт,177с. Изолированный netns с IPv6 loopback,настройки хоста не менялись.
|
||||
ASAN/UBSan/LSan16/16 PASS,detect_leaks=1,halt_on_error=1;core/libuasync/Opus
|
||||
согласованно инструментированы в отдельной копии. Профиль:requests/decisions/results/
|
||||
chat_attachment/encrypted_attachment/attachment_send/chat_admin/services/instance_contract/
|
||||
media_primitives/db_sync/db_sync_integrity/db_sync_schema/chat_feedback/dm_history/android_replies.
|
||||
Desktop vibechat и Android assembleDebug PASS;GUI/Android host11/11 PASS,включая6
|
||||
вариантов audio lifecycle с core stop/restart. Логи и полные каталоги:
|
||||
/tmp/chat-attachment-followup-{build,full-check,asan-results,desktop-build,android-build,gui-results}.log,
|
||||
/tmp/chat-attachment-followup-full-logs,/tmp/chat-attachment-followup-asan-logs.
|
||||
|
||||
Три задачи закрыты. Полный аудит chat/attachment остаётся частичным:привязка
|
||||
message_id/hash,наблюдение manifest,запрос загрузки,очередь отправки и восстановление
|
||||
требуют оставшейся сверки. Внешний checklist сохраняет[~],отчёты туда не добавляются.
|
||||
@@ -4,6 +4,37 @@
|
||||
|
||||
## Текущие задачи
|
||||
|
||||
[+] **chat_attachment: исходящий REQUEST и outbox фиксируются вместе до уведомления/отправки** — 27.10.2026.
|
||||
Собственная транзакция повторно проверяет состояние файла,создаёт ровно один запрос и очередь.
|
||||
Внешняя транзакция откладывает весь tick;неудачный rollback не перезапускает таймер после quiesce/stop.
|
||||
test_attachment_requests:52 SQL-отказа/повтора с пустой/существующей очередью,ABORT/IGNORE,commit veto,
|
||||
внешняя транзакция до создания/отправки,readonly reader перед событием/REQUEST,реальный restart
|
||||
при отсутствии маршрута/backpressure/send failure с сохранением даты. Старый код ожидаемо FAIL новой регрессии.
|
||||
Общая проверка ниже:212/212 native,16/16 sanitizers,11/11 GUI/Android host,desktop/APK build PASS.
|
||||
Отчёт:[chat_audit_findings.txt](chat_audit_findings.txt),«Исходящий REQUEST»;/tmp/attachment-outgoing-*.
|
||||
|
||||
[+] **chat_attachment: захват расшифровки до worker и владение completion до commit результата** — 27.10.2026.
|
||||
decrypting=1 фиксируется собственной проверенной транзакцией;completion отличает SQL-отказ от удаления.
|
||||
Готовая задача остаётся у модуля до commit;таймер повторяет только SQL,ключ/файл не теряются и второй worker не создаётся.
|
||||
Лимит16 включает workers/завершения;quiesce останавливает повторы,destroy после workers освобождает остаток.
|
||||
test_chat_attachment:9 отказов claim,15 успешного результата,8 записи ошибки worker,ABORT/IGNORE/veto,
|
||||
внешняя транзакция,delete/stop/restart,rollback failure и16 задержанных авторских задач с сохранением17-го source.
|
||||
Старый sanitizer-runtime подтвердил ready1/infoNULL после bind NOMEM;новый профиль и баланс выделений PASS.
|
||||
Общая проверка:check.sh212/212,0 skipped,proxy9/9,burst1/1,load8/8,177с;
|
||||
ASAN/UBSan/LSan16/16 detect_leaks=1,desktop/APK build,GUI/Android host11/11 PASS.
|
||||
Отчёт:[chat_audit_findings.txt](chat_audit_findings.txt),«Завершение файлов»;/tmp/attachment-jobs-*.
|
||||
|
||||
[+] **chat: удалять attachment-записи атомарно с каналом,файлы — после commit** — 27.10.2026.
|
||||
SQLite-trigger каскадно удаляет ключи/запросы/outbox и проверяет полный результат;topo deletion проверяет finalize
|
||||
и отсутствие канала/Merkle-хешей. Ошибка SQL сохраняет данные/файлы;внешняя транзакция запрещена до отмены ресурсов.
|
||||
Файлы удаляются после commit,незавершённый rollback требует stop/закрытия владельцем;NULL instance безопасен.
|
||||
test_chat_attachment:14 отказов с точным readonly-снимком,ABORT/IGNORE всех таблиц и Merkle,commit veto,
|
||||
внешняя транзакция и rollback fault;до фикса подтверждены reader_keys2 вместо3 и потерянный plaintext при живом канале.
|
||||
Native build/check.sh212/212 PASS,proxy9/9,burst1/1,load8/8 (134217728байт),177с;
|
||||
ASAN/UBSan/LSan16/16 detect_leaks=1,GUI/Android host11/11,desktop/APK build PASS.
|
||||
Логи:/tmp/chat-attachment-followup-{build,full-check,asan-results,desktop-build,android-build,gui-results}.log.
|
||||
Отчёт:[chat_audit_findings.txt](chat_audit_findings.txt),«Удаление канала»;полный аудит chat/attachment остаётся[~].
|
||||
|
||||
[+] **chat_attachment: подтверждать входящий REQUEST после собственного commit** — исправлено27.10.2026.
|
||||
Собственная BEGIN IMMEDIATE/COMMIT включает identity,права,чтение/создание запроса и повтор прежнего ответа.
|
||||
Внешняя транзакция отклоняется без изменений;дубликаты incoming1/state0,2,3,4 сохраняют решение и created_at.
|
||||
|
||||
Reference in new issue
Block a user