Bug 29823

Summary: Логика удаления files-awaiting-filetriggers при выполнении posttrans-filetriggers
Product: Sisyphus Reporter: Evgeny Sinelnikov <sin>
Component: rpmAssignee: placeholder <placeholder>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: at, glebfm, imz, iv, lav, ldv, placeholder, vt
Version: unstable   
Hardware: all   
OS: Linux   
URL: http://bugs.etersoft.ru/show_bug.cgi?id=9820

Description Evgeny Sinelnikov 2014-02-12 23:51:08 MSK
В ряде случаев выполнение posttrans-filetriggers может завершиться ошибкой. В этом случае в файле files-awaiting-filetriggers оказываются сохранёнными имена всех файлов с предыдущей транзакции.

В случае большого обновления files-awaiting-filetriggers может занимать несколько десятков мегабайт и содержать несколько сотен тысяч имён файлов, для которых требуется выполнить скрипты файловых триггеров.

В случае большого числа файлов вероятность ошибки в каком либо из триггеров существенно возрастает. В итоге, после установки и выполнения скриптов может быть выдана следующая ошибка:
error: execution of /usr/lib/rpm/posttrans-filetriggers scriptlet from (null)-(null)-(null) failed, exit status 1

В этом случае огромный файл files-awaiting-filetriggers сохранится и при следующей установке скрипты снова будут запущены для всех сотен тысяч файлов, для которых при выполнении скриптов в прошлый раз произошла ошибка.

При этом ошибка, как правило повторяется, файл files-awaiting-filetriggers сохранятся и возникает проблема:
- во время каждой последующей, даже самой простой, установки файловые триггеры запускаются снова и снова для всех предыдущих файлов, которые были установлены с момента сбоя.

Пример такого файла привожу в виде ссылки:
http://ftp.etersoft.ru/pub/people/sin/files-awaiting-filetriggers.xz
Comment 1 Dmitry V. Levin 2014-02-13 00:23:39 MSK
Что хотелось бы изменить в этой логике?
Comment 2 Gleb F-Malinovskiy 2016-12-19 17:16:39 MSK
(В ответ на комментарий №1)
> Что хотелось бы изменить в этой логике?

Женя, ping?  В rpm 4.13.0 реализована точно такая же логика.
Comment 3 Evgeny Sinelnikov 2016-12-19 23:17:35 MSK
В логике хотелось бы таких изменений, чтобы оно не падало и не тормозило.

Вообще, наверное, стоит разбивать файл на части, при превышении фиксированного размера. Запускать триггеры по частям, в таком случае. А в случае ошибки - выдавать предупреждения с указанием того, какой файл нужно, если что, удалить.