Bug 61107
| Summary: | icecast: нет systemd-юнита; под systemd служба не держит процесс, pidfile в icecast.xml не совпадает с init-скриптом | ||
|---|---|---|---|
| Product: | Branch p11 | Reporter: | Vitaly Lipatov <lav> |
| Component: | icecast | Assignee: | Vitaly Lipatov <lav> |
| Status: | ASSIGNED --- | QA Contact: | qa-p11 <qa-p11> |
| Severity: | normal | ||
| Priority: | P5 | ||
| Version: | unspecified | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
Воспроизведено на p11 icecast-2.4.4-alt2 (docker alt-test:p11, systemd PID 1): - юнит только сгенерированный systemd-sysv-generator из /etc/rc.d/init.d/icecast, своего icecast.service в пакете нет; - pidfile создаётся в корне ФС (/icecast.pid), /var/run/icecast/ нет; systemctl stop icecast: "Service icecast is not running", юнит inactive, но "Unit process ... (icecast) remains running after unit stopped"; systemctl restart: "Could not create listener socket on port 8000 ... Server startup failed" при "[ DONE ]" — работает старый процесс. Исправление: свой icecast.service (Type=simple, ExecStartPre=/etc/chroot.d/icecast.all, ExecStart без -b, ExecReload=kill -HUP $MAINPID) и согласованный pidfile/init-скрипт. Сначала в Sisyphus (пакет туда возвращается), затем тем же релизом в p11 и c11f1. Дополнение: перечитать конфиг по HUP (systemctl reload) нельзя при <chroot>1</chroot>, который включён в пакетном /etc/icecast.xml. После перехода в chroot (/var/lib/icecast) icecast уже не видит /etc/icecast.xml. По HUP в error.log: WARN config failed to load external entity "/etc/icecast.xml" EROR event/event_config_read Parse error in reading /etc/icecast.xml EROR event/event_config_read Error parsing config, not replacing existing config Служба продолжает работать со старым конфигом, а systemctl reload (и service icecast reload) возвращает успех, так что ошибку легко не заметить. Предложение: - в юните не задавать ExecReload: изменения применяются только restart, источник переподключается за несколько секунд; - либо держать копию конфига внутри chroot (ExecStartPre копирует /etc/icecast.xml в /var/lib/icecast/etc/ и icecast запускается с ней) — тогда HUP работает. Проверено на icecast-2.4.4-alt2 (p11), x86_64. |

Description
Vitaly Lipatov 2026-10-16 22:55:25 MSK