Record media index plan constraints and late completion race

This commit is contained in:
evgeny committed 2026-10-22 14:35:56 +02:00
1 parent d68ab90f23
commit ad62eee10c
1 file changed
+14
+14
View File
@@ -39,6 +39,20 @@
register_async в этом случае вернёт result=NULL и освободит идентификаторы подготовленного результата.
Обеспечить атомарность регистрации всех блоков с учётом внешней транзакции и описать гарантии .h.
Лог /tmp/media-index-location-audit.log: second-block-failure commit=-1 rows_remaining=1.
Уточнение плана: гарантия относится к БД, не к уже выполненному копированию worker.
SAVEPOINT сохраняет внешнюю транзакцию при локальных ошибках; RAISE(ROLLBACK) уничтожает и транзакцию, и savepoint.
Повтор скачанного блока не должен затирать подписанную запись автора нулевой node_sign;
отличающиеся chat_id/location сейчас также молча игнорируются с возвратом 0 — конфликт надо диагностировать.
Дополнительные проверки: /tmp/media-index-plan-review.c, /tmp/media-index-plan-review.log.
[ ] **Удаление канала: поздний completion повторно регистрирует медиа** — проверка плана 22.10.2026:
Стенд запускает register_async(copy=0), очищает media_files канала до обработки completion и затем обрабатывает uasync:
delete_channel=0, rows_before_completion=0, callback err=0, rows_after_completion=1.
mi_reg_done выполняет commit раньше on_media_registered, где проверяется наличие db_sync канала.
media_delivery_cancel_channel отменяет downloads/streams/relay, но не исходящие задачи регистрации.
Согласовать завершение подготовки с удалением канала до commit; учесть повторное создание того же channel_id
и отдельно определить судьбу файлов, которые worker успел опубликовать. Проверка только наличия канала недостаточна.
Реализация не менялась; стенд /tmp/media-index-plan-review.c, лог /tmp/media-index-plan-review.log.
[ ] **media_index_delete_channel: возвращать реальные ошибки удаления** — воспроизведено 22.10.2026:
После DROP TABLE media_files delete_channel возвращает 0 при SQLite-ошибке no such table.