Record media index plan constraints and late completion race
This commit is contained in:
1 parent
d68ab90f23
commit
ad62eee10c
1 file changed
+14
@@ -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.
|
||||
|
||||
Reference in new issue
Block a user