Bug 41487 - Не перезапускать в процессе обновления
Summary: Не перезапускать в процессе обновления
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: unit (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Vitaly Chikunov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-12-02 15:50 MSK by Anton Farygin
Modified: 2021-12-19 02:42 MSK (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Anton Farygin 2021-12-02 15:50:39 MSK
Обновление с версии 1.25 до версии 1.26 приводит к ошибке загрузки python модуля.

Всё потому что python модуль обновляется чуть позже чем надо.

Для исправления этой ошибки достаточно просто удалить из spec'а:
%post
%post_service unit

%preun
%preun_service unit


Вот как выглядит обновление в логах:
2021/12/02 15:40:32 [info] 64104#64117 *15804 send(12, 7F7249341C31, 635393) failed (32: Broken pipe)
2021/12/02 15:40:37 [alert] 64101#64101 sendmsg(12, -1, -1, 1) failed (32: Broken pipe)
2021/12/02 15:40:37 [notice] 64101#64101 process 64103 exited with code 0
2021/12/02 15:40:37 [notice] 64101#64101 process 64104 exited with code 0
2021/12/02 15:40:37 [notice] 64101#64101 process 66203 exited with code 0
2021/12/02 15:40:37 [notice] 64101#64101 process 66201 exited with code 0
2021/12/02 15:40:37 [notice] 64101#64101 process 66205 exited with code 0
2021/12/02 15:40:37 [notice] 64101#64101 process 66202 exited with code 0
2021/12/02 15:40:37 [notice] 64101#64101 process 66204 exited with code 0
2021/12/02 15:40:37 [notice] 64101#64101 process 66209 exited with code 0
2021/12/02 15:40:37 [notice] 64101#64101 process 66206 exited with code 0
2021/12/02 15:40:37 [notice] 64101#64101 process 66207 exited with code 0
2021/12/02 15:40:37 [notice] 64101#64101 process 66210 exited with code 0
2021/12/02 15:40:37 [notice] 64101#64101 process 66208 exited with code 0
2021/12/02 15:40:37 [info] 66631#66631 discovery started
2021/12/02 15:40:37 [notice] 66631#66631 module: python 3.9.6 "/usr/lib64/unit/modules/python3.unit.so"
2021/12/02 15:40:37 [notice] 66631#66631 incompatible module /usr/lib64/unit/modules/python3.unit.so
2021/12/02 15:40:37 [info] 66630#66630 controller started
2021/12/02 15:40:37 [notice] 66630#66630 process 66631 exited with code 0
2021/12/02 15:40:37 [alert] 66632#66632 the previous configuration is invalid: The module to run "python" is not found among the available application modules.
2021/12/02 15:40:37 [info] 66633#66633 router started
Comment 1 Dmitry V. Levin 2021-12-02 16:13:05 MSK
(In reply to Anton Farygin from comment #0)
> Обновление с версии 1.25 до версии 1.26 приводит к ошибке загрузки python
> модуля.
> 
> Всё потому что python модуль обновляется чуть позже чем надо.

Значит, зависимости надо ставить.

> Для исправления этой ошибки достаточно просто удалить из spec'а:
> %post
> %post_service unit
> 
> %preun
> %preun_service unit

Это по определению не может быть правильно.
Comment 2 Anton Farygin 2021-12-02 16:14:53 MSK
Зависимости не помогут - я встречал ситуации, когда apt'у тяжело выстроить правильную очерёдность и он выстраивает порядок обновлёния всё равно не так, как нужно приложению.

Удаления %post_service недостаточно, конечно же надо добавить filetrigger для перезапуска.
Comment 3 Anton Farygin 2021-12-02 16:18:07 MSK
Строгая зависимость, кстати, есть и она не помогла:
https://beta.packages.altlinux.org/ru/sisyphus/binary/unit-python3/x86_64/depends/2737715197315712736
Comment 4 Dmitry V. Levin 2021-12-02 16:18:41 MSK
(In reply to Anton Farygin from comment #2)
> Зависимости не помогут - я встречал ситуации, когда apt'у тяжело выстроить
> правильную очерёдность и он выстраивает порядок обновлёния всё равно не так,
> как нужно приложению.

Если циклических зависимостей нет, то даже apt справляется нормально.
А если есть, то надо их разрывать, иначе это лотерея.

У нас в install check есть диагностика циклических зависимостей, но её, к сожалению, все игнорируют.
Comment 5 Anton Farygin 2021-12-02 16:22:01 MSK
Если очень интересно, то порядок и пакеты обновления в этой транзакции были такими:
дек 02 15:40:37 frontend-repodb apt-get[66479]: unit-1.26.0-alt1 p10+290332.100.2.1 1638272080 installed
дек 02 15:40:37 frontend-repodb apt-get[66479]: libudev1-1:249.5-alt2 p10+288309.100.1.1 1635461987 installed
дек 02 15:40:38 frontend-repodb apt-get[66479]: udev-1:249.5-alt2 p10+288309.100.1.1 1635461987 installed
дек 02 15:40:38 frontend-repodb apt-get[66479]: libapt-0.5.15lorg2-alt73 p10+289181.100.1.1 1636378806 installed
дек 02 15:40:38 frontend-repodb apt-get[66479]: unit-debuginfo-1.26.0-alt1 p10+290332.100.2.1 1638272080 installed
дек 02 15:40:39 frontend-repodb apt-get[66479]: unit-python3-1.26.0-alt1 p10+290332.100.2.1 1638272080 installed
дек 02 15:40:39 frontend-repodb apt-get[66479]: qemu-aux-6.1.0-alt2 p10+289854.40.4.1 1637854614 installed
дек 02 15:40:42 frontend-repodb apt-get[66479]: python3-module-django-3.2.9-alt1 p10+290516.100.1.1 1637753657 installed
дек 02 15:40:42 frontend-repodb apt-get[66479]: glib2-locales-2.68.4-alt2 p10+285934.400.6.1 1637075234 installed
дек 02 15:40:42 frontend-repodb apt-get[66479]: glib2-2.68.4-alt2 p10+285934.400.6.1 1637075234 installed
дек 02 15:40:43 frontend-repodb apt-get[66479]: git-core-2.33.1-alt1 p10+288710.100.2.1 1636957800 installed
дек 02 15:40:43 frontend-repodb apt-get[66479]: perl-Git-2.33.1-alt1 p10+288710.100.2.1 1636957800 installed
дек 02 15:40:43 frontend-repodb apt-get[66479]: libnss-myhostname-1:249.5-alt2 p10+288309.100.1.1 1635461987 installed
дек 02 15:40:43 frontend-repodb apt-get[66479]: pam_systemd-1:249.5-alt2 p10+288309.100.1.1 1635461987 installed
дек 02 15:40:43 frontend-repodb apt-get[66479]: systemd-sysctl-common-1:249.5-alt2 p10+288309.100.1.1 1635461987 installed
дек 02 15:40:43 frontend-repodb apt-get[66479]: systemd-tmpfiles-common-1:249.5-alt2 p10+288309.100.1.1 1635461987 installed
дек 02 15:40:44 frontend-repodb apt-get[66479]: systemd-utils-filetriggers-1:249.5-alt2 p10+288309.100.1.1 1635461987 installed
дек 02 15:40:44 frontend-repodb apt-get[66479]: systemd-utils-1:249.5-alt2 p10+288309.100.1.1 1635461987 installed
дек 02 15:40:44 frontend-repodb apt-get[66479]: systemd-boot-efi-1:249.5-alt2 p10+288309.100.1.1 1635461987 installed
дек 02 15:40:44 frontend-repodb apt-get[66479]: systemd-services-1:249.5-alt2 p10+288309.100.1.1 1635461987 installed
дек 02 15:40:44 frontend-repodb apt-get[66479]: systemd-1:249.5-alt2 p10+288309.100.1.1 1635461987 installed
дек 02 15:40:45 frontend-repodb apt-get[66479]: systemd-networkd-1:249.5-alt2 p10+288309.100.1.1 1635461987 installed
дек 02 15:40:45 frontend-repodb apt-get[66479]: libnss-systemd-1:249.5-alt2 p10+288309.100.1.1 1635461987 installed
дек 02 15:40:46 frontend-repodb apt-get[66479]: libsha1detectcoll1-1.0.3-alt1 p10+288613.40.3.1 1636958799 installed
дек 02 15:40:46 frontend-repodb apt-get[66479]: gnupg-1.4.23-alt4 p10+288613.100.3.1 1636958849 installed
дек 02 15:40:46 frontend-repodb apt-get[66479]: apt-0.5.15lorg2-alt73 p10+289181.100.1.1 1636378806 installed
дек 02 15:40:46 frontend-repodb apt-get[66479]: apt-rsync-0.5.15lorg2-alt73 p10+289181.100.1.1 1636378806 installed
дек 02 15:40:46 frontend-repodb apt-get[66479]: systemd-timesyncd-1:249.5-alt2 p10+288309.100.1.1 1635461987 installed
дек 02 15:40:47 frontend-repodb apt-get[66479]: libnss-resolve-1:249.5-alt2 p10+288309.100.1.1 1635461987 installed
дек 02 15:40:47 frontend-repodb apt-get[66479]: systemd-analyze-1:249.5-alt2 p10+288309.100.1.1 1635461987 installed
дек 02 15:40:47 frontend-repodb apt-get[66479]: systemd-sysvinit-1:249.5-alt2 p10+288309.100.1.1 1635461987 installed
дек 02 15:40:47 frontend-repodb apt-get[66479]: git-2.33.1-alt1 p10+288710.100.2.1 1636957800 installed
дек 02 15:40:47 frontend-repodb apt-get[66479]: qemu-guest-agent-6.1.0-alt2 p10+289854.40.4.1 1637854614 installed
дек 02 15:40:47 frontend-repodb apt-get[66479]: python3-module-django-dbbackend-sqlite3-3.2.9-alt1 p10+290516.100.1.1 1637753657 installed
дек 02 15:40:47 frontend-repodb apt-get[66479]: unit-python3-debuginfo-1.26.0-alt1 p10+290332.100.2.1 1638272080 installed
дек 02 15:40:48 frontend-repodb apt-get[66479]: aptitude-0.4.5-alt13 p10+289181.400.1.1 1636378948 installed
дек 02 15:40:48 frontend-repodb apt-get[66479]: usbutils-014-alt2 p10+289817.100.2.1 1637851778 installed
дек 02 15:40:48 frontend-repodb apt-get[66479]: strace-5.15-alt1 p10+291135.100.1.1 1638392366 installed
дек 02 15:40:48 frontend-repodb apt-get[66479]: pciids-20211122-alt1 p10+290437.100.1.1 1637629645 installed
дек 02 15:40:48 frontend-repodb apt-get[66479]: libsystemd-1:249.5-alt2 p10+288309.100.1.1 1635461987 installed
дек 02 15:40:48 frontend-repodb apt-get[66479]: libpq5-14.1-alt1 p10+289311.100.2.1 1637316056 installed
дек 02 15:40:48 frontend-repodb apt-get[66479]: qemu-guest-agent-6.0.0-alt2 sisyphus+277901.100.1.1 1625918185 removed
дек 02 15:40:48 frontend-repodb apt-get[66479]: unit-python3-debuginfo-1.25.0-alt3 1635231547 removed
дек 02 15:40:48 frontend-repodb apt-get[66479]: systemd-timesyncd-1:249.4-alt2 p10+283536.400.6.1 1631547814 removed
дек 02 15:40:49 frontend-repodb apt-get[66479]: libnss-systemd-1:249.4-alt2 p10+283536.400.6.1 1631547814 removed
дек 02 15:40:49 frontend-repodb apt-get[66479]: unit-python3-1.25.0-alt3 1635231547 removed
дек 02 15:40:49 frontend-repodb apt-get[66479]: unit-debuginfo-1.25.0-alt3 1635231547 removed
дек 02 15:40:49 frontend-repodb apt-get[66479]: glib2-2.68.4-alt1.1 p10+284327.500.7.1 1632403926 removed
дек 02 15:40:49 frontend-repodb apt-get[66479]: usbutils-013-alt1 sisyphus+278999.100.1.1 1626351849 removed
дек 02 15:40:49 frontend-repodb apt-get[66479]: python3-module-django-dbbackend-sqlite3-3.2.6-alt1 p10+283535.200.4.1 1631192647 removed
дек 02 15:40:49 frontend-repodb apt-get[66479]: git-2.29.3-alt2 sisyphus+271077.100.1.1 1619809174 removed
дек 02 15:40:49 frontend-repodb apt-get[66479]: perl-Git-2.29.3-alt2 sisyphus+271077.100.1.1 1619809174 removed
дек 02 15:40:49 frontend-repodb apt-get[66479]: systemd-sysvinit-1:249.4-alt2 p10+283536.400.6.1 1631547814 removed
дек 02 15:40:49 frontend-repodb apt-get[66479]: systemd-analyze-1:249.4-alt2 p10+283536.400.6.1 1631547814 removed
дек 02 15:40:49 frontend-repodb apt-get[66479]: libnss-resolve-1:249.4-alt2 p10+283536.400.6.1 1631547814 removed
дек 02 15:40:49 frontend-repodb apt-get[66479]: systemd-networkd-1:249.4-alt2 p10+283536.400.6.1 1631547814 removed
дек 02 15:40:49 frontend-repodb apt-get[66479]: systemd-1:249.4-alt2 p10+283536.400.6.1 1631547814 removed
дек 02 15:40:50 frontend-repodb apt-get[66479]: systemd-services-1:249.4-alt2 p10+283536.400.6.1 1631547814 removed
дек 02 15:40:50 frontend-repodb apt-get[66479]: systemd-boot-efi-1:249.4-alt2 p10+283536.400.6.1 1631547814 removed
дек 02 15:40:50 frontend-repodb apt-get[66479]: systemd-utils-1:249.4-alt2 p10+283536.400.6.1 1631547814 removed
дек 02 15:40:50 frontend-repodb apt-get[66479]: apt-rsync-0.5.15lorg2-alt72 sisyphus+277626.100.1.2 1625754022 removed
дек 02 15:40:50 frontend-repodb apt-get[66479]: apt-0.5.15lorg2-alt72 sisyphus+277626.100.1.2 1625754022 removed
дек 02 15:40:50 frontend-repodb apt-get[66479]: aptitude-0.4.5-alt13 sisyphus+275612.600.8.1 1624626949 removed
дек 02 15:40:50 frontend-repodb apt-get[66479]: libapt-0.5.15lorg2-alt72 sisyphus+277626.100.1.2 1625754022 removed
дек 02 15:40:50 frontend-repodb apt-get[66479]: gnupg-1.4.23-alt2 sisyphus+279808.100.1.1 1626732185 removed
дек 02 15:40:50 frontend-repodb apt-get[66479]: systemd-utils-filetriggers-1:249.4-alt2 p10+283536.400.6.1 1631547814 removed
дек 02 15:40:50 frontend-repodb apt-get[66479]: systemd-tmpfiles-common-1:249.4-alt2 p10+283536.400.6.1 1631547814 removed
дек 02 15:40:50 frontend-repodb apt-get[66479]: systemd-sysctl-common-1:249.4-alt2 p10+283536.400.6.1 1631547814 removed
дек 02 15:40:50 frontend-repodb apt-get[66479]: pam_systemd-1:249.4-alt2 p10+283536.400.6.1 1631547814 removed
дек 02 15:40:50 frontend-repodb apt-get[66479]: libnss-myhostname-1:249.4-alt2 p10+283536.400.6.1 1631547814 removed
дек 02 15:40:50 frontend-repodb apt-get[66479]: udev-1:249.4-alt2 p10+283536.400.6.1 1631547814 removed
дек 02 15:40:51 frontend-repodb apt-get[66479]: git-core-2.29.3-alt2 sisyphus+271077.100.1.1 1619809174 removed
дек 02 15:40:51 frontend-repodb apt-get[66479]: python3-module-django-3.2.6-alt1 p10+283535.200.4.1 1631192647 removed
дек 02 15:40:51 frontend-repodb apt-get[66479]: libudev1-1:249.4-alt2 p10+283536.400.6.1 1631547814 removed
дек 02 15:40:51 frontend-repodb apt-get[66479]: glib2-locales-2.68.4-alt1.1 p10+284327.500.7.1 1632403926 removed
дек 02 15:40:51 frontend-repodb apt-get[66479]: unit-1.25.0-alt3 1635231547 removed
дек 02 15:40:51 frontend-repodb apt-get[66479]: qemu-aux-6.0.0-alt2 sisyphus+277901.100.1.1 1625918185 removed
дек 02 15:40:51 frontend-repodb apt-get[66479]: strace-5.14-alt1 p10+284534.100.1.1 1630680848 removed
дек 02 15:40:51 frontend-repodb apt-get[66479]: pciids-20211025-alt1 p10+288164.100.1.1 1635210460 removed
дек 02 15:40:51 frontend-repodb apt-get[66479]: libsystemd-1:249.4-alt2 p10+283536.400.6.1 1631547814 removed
дек 02 15:40:51 frontend-repodb apt-get[66479]: libpq5-13.4-alt1 p10+282403.100.1.1 1628676575 removed
Comment 6 Dmitry V. Levin 2021-12-02 16:24:29 MSK
Если unit при старте загружает плагины из своих подпакетов, то его надо перевести на ту же схему обновления, которую использует postfix.
Comment 7 Anton Farygin 2021-12-02 16:32:36 MSK
Да, конечно можно и также как в postfix'е.
Comment 8 Repository Robot 2021-12-04 08:01:04 MSK
unit-1.26.1-alt1 -> sisyphus:

 Sat Dec 04 2021 Vitaly Chikunov <vt@altlinux> 1.26.1-alt1
 - Update to 1.26.1 (2021-12-02).
 - Restart unit from filetrigger (closes: #41487).
Comment 9 Vitaly Chikunov 2021-12-04 08:04:35 MSK
Done. Но, мне не нравится в этом подходе, что unitd не будет быстро перезапущен, а будет оставаться остановленным, возможно, долгое время, до от %pre до конца транзакции.
Comment 10 Anton Farygin 2021-12-04 12:34:08 MSK
Я тоже об этом думал, и, например, apache перезапускаю в конце транзакции без остановки в процессе обновления. Но у этого подхода есть минус и некоторая вероятность словить невозможность остановить старый процесс с помощью скриптов обновлённого пакета.
Comment 11 Vitaly Chikunov 2021-12-19 02:42:35 MSK
Переделал на %post_service_posttrans_restart.