From 439be05aef39e24f8205a4db075aec6701064f91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Cohen=20Arazi?= Date: Mon, 27 Apr 2026 14:19:59 -0300 Subject: [PATCH] Bug 40901: (follow-up) Extract koha-create-dirs into a oneshot unit Replace per-service ExecStartPre=+koha-create-dirs (running as root on every start of every service) with a single oneshot unit per instance. Services declare Requires= on it, and the oneshot's Before= ensures directories exist before any service starts. Signed-off-by: Kyle M Hall Signed-off-by: Martin Renvoize Signed-off-by: Pedro Amorim --- debian/systemd/koha-create-dirs@.service | 12 ++++++++++++ debian/systemd/koha-es-indexer@.service | 2 +- debian/systemd/koha-indexer@.service | 2 +- debian/systemd/koha-plack@.service | 2 +- debian/systemd/koha-sip@.service | 2 +- debian/systemd/koha-worker-long_tasks@.service | 2 +- debian/systemd/koha-worker@.service | 2 +- debian/systemd/koha-z3950@.service | 2 +- debian/systemd/koha-zebra@.service | 2 +- 9 files changed, 20 insertions(+), 8 deletions(-) create mode 100644 debian/systemd/koha-create-dirs@.service diff --git a/debian/systemd/koha-create-dirs@.service b/debian/systemd/koha-create-dirs@.service new file mode 100644 index 0000000000..b6eaac6341 --- /dev/null +++ b/debian/systemd/koha-create-dirs@.service @@ -0,0 +1,12 @@ +[Unit] +Description=Create directories for Koha instance %i +PartOf=koha@%i.target +Before=koha-plack@%i.service koha-zebra@%i.service koha-indexer@%i.service koha-es-indexer@%i.service koha-worker@%i.service koha-worker-long_tasks@%i.service koha-sip@%i.service koha-z3950@%i.service + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=+/usr/sbin/koha-create-dirs %i + +[Install] +WantedBy=koha@%i.target diff --git a/debian/systemd/koha-es-indexer@.service b/debian/systemd/koha-es-indexer@.service index 1264d2b08b..ffc91d240f 100644 --- a/debian/systemd/koha-es-indexer@.service +++ b/debian/systemd/koha-es-indexer@.service @@ -1,6 +1,7 @@ [Unit] Description=Koha Elasticsearch indexer daemon for %i PartOf=koha@%i.target +Requires=koha-create-dirs@%i.service After=koha@%i.target [Service] @@ -11,7 +12,6 @@ WorkingDirectory=/var/lib/koha/%i Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml Environment=KOHA_HOME=/usr/share/koha Environment=PERL5LIB=/usr/share/koha/lib -ExecStartPre=+/usr/sbin/koha-create-dirs %i ExecStart=/usr/share/koha/bin/workers/es_indexer_daemon.pl Restart=on-failure RestartSec=30s diff --git a/debian/systemd/koha-indexer@.service b/debian/systemd/koha-indexer@.service index 8b9831f0c6..0daf3706a3 100644 --- a/debian/systemd/koha-indexer@.service +++ b/debian/systemd/koha-indexer@.service @@ -1,6 +1,7 @@ [Unit] Description=Koha Zebra indexer daemon for %i PartOf=koha@%i.target +Requires=koha-create-dirs@%i.service After=koha@%i.target koha-zebra@%i.service [Service] @@ -11,7 +12,6 @@ WorkingDirectory=/var/lib/koha/%i Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml Environment=KOHA_HOME=/usr/share/koha Environment=PERL5LIB=/usr/share/koha/lib -ExecStartPre=+/usr/sbin/koha-create-dirs %i ExecStart=/usr/share/koha/bin/migration_tools/rebuild_zebra.pl -daemon -sleep 5 Restart=on-failure RestartSec=30s diff --git a/debian/systemd/koha-plack@.service b/debian/systemd/koha-plack@.service index 38e78f400c..81da4f11ce 100644 --- a/debian/systemd/koha-plack@.service +++ b/debian/systemd/koha-plack@.service @@ -1,6 +1,7 @@ [Unit] Description=Koha Plack server for %i PartOf=koha@%i.target +Requires=koha-create-dirs@%i.service After=koha@%i.target [Service] @@ -12,7 +13,6 @@ Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml Environment=KOHA_HOME=/usr/share/koha Environment=PERL5LIB=/usr/share/koha/lib PIDFile=/var/run/koha/%i/plack.pid -ExecStartPre=+/usr/sbin/koha-create-dirs %i ExecStart=/usr/bin/plackup -s Starman --daemonize --pid /var/run/koha/%i/plack.pid --listen /var/run/koha/%i/plack.sock /etc/koha/plack.psgi ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure diff --git a/debian/systemd/koha-sip@.service b/debian/systemd/koha-sip@.service index 8823f7fbba..6071fd2410 100644 --- a/debian/systemd/koha-sip@.service +++ b/debian/systemd/koha-sip@.service @@ -1,6 +1,7 @@ [Unit] Description=Koha SIP server for %i PartOf=koha@%i.target +Requires=koha-create-dirs@%i.service After=koha@%i.target ConditionPathExists=/var/lib/koha/%i/sip.enabled ConditionPathExists=/etc/koha/sites/%i/SIPconfig.xml @@ -13,7 +14,6 @@ WorkingDirectory=/var/lib/koha/%i Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml Environment=KOHA_HOME=/usr/share/koha Environment=PERL5LIB=/usr/share/koha/lib -ExecStartPre=+/usr/sbin/koha-create-dirs %i ExecStart=/usr/bin/perl /usr/share/koha/lib/C4/SIP/SIPServer.pm /etc/koha/sites/%i/SIPconfig.xml Restart=on-failure RestartSec=30s diff --git a/debian/systemd/koha-worker-long_tasks@.service b/debian/systemd/koha-worker-long_tasks@.service index e8a39e6219..95631f8f53 100644 --- a/debian/systemd/koha-worker-long_tasks@.service +++ b/debian/systemd/koha-worker-long_tasks@.service @@ -1,6 +1,7 @@ [Unit] Description=Koha background worker (long_tasks queue) for %i PartOf=koha@%i.target +Requires=koha-create-dirs@%i.service After=koha@%i.target StartLimitIntervalSec=60 StartLimitBurst=3 @@ -13,7 +14,6 @@ WorkingDirectory=/var/lib/koha/%i Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml Environment=KOHA_HOME=/usr/share/koha Environment=PERL5LIB=/usr/share/koha/lib -ExecStartPre=+/usr/sbin/koha-create-dirs %i ExecStart=/usr/share/koha/bin/workers/background_jobs_worker.pl --queue long_tasks Restart=on-failure RestartSec=5s diff --git a/debian/systemd/koha-worker@.service b/debian/systemd/koha-worker@.service index d183f2fdcc..ef065b7492 100644 --- a/debian/systemd/koha-worker@.service +++ b/debian/systemd/koha-worker@.service @@ -1,6 +1,7 @@ [Unit] Description=Koha background worker (default queue) for %i PartOf=koha@%i.target +Requires=koha-create-dirs@%i.service After=koha@%i.target StartLimitIntervalSec=60 StartLimitBurst=3 @@ -13,7 +14,6 @@ WorkingDirectory=/var/lib/koha/%i Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml Environment=KOHA_HOME=/usr/share/koha Environment=PERL5LIB=/usr/share/koha/lib -ExecStartPre=+/usr/sbin/koha-create-dirs %i ExecStart=/usr/share/koha/bin/workers/background_jobs_worker.pl --queue default Restart=on-failure RestartSec=5s diff --git a/debian/systemd/koha-z3950@.service b/debian/systemd/koha-z3950@.service index 4bb0bac458..c830d31b84 100644 --- a/debian/systemd/koha-z3950@.service +++ b/debian/systemd/koha-z3950@.service @@ -1,6 +1,7 @@ [Unit] Description=Koha Z39.50/SRU server for %i PartOf=koha@%i.target +Requires=koha-create-dirs@%i.service After=koha@%i.target ConditionPathExists=/etc/koha/sites/%i/z3950/config.xml @@ -13,7 +14,6 @@ Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml Environment=KOHA_HOME=/usr/share/koha Environment=PERL5LIB=/usr/share/koha/lib PIDFile=/var/run/koha/%i/z3950-responder.pid -ExecStartPre=+/usr/sbin/koha-create-dirs %i ExecStart=/usr/share/koha/bin/z3950_responder.pl -c /etc/koha/sites/%i/z3950 -u %i-koha -p /var/run/koha/%i/z3950-responder.pid -D -d %i-koha-z3950 -l /var/log/koha/%i/z3950.log Restart=on-failure RestartSec=30s diff --git a/debian/systemd/koha-zebra@.service b/debian/systemd/koha-zebra@.service index 406c733291..f09864f561 100644 --- a/debian/systemd/koha-zebra@.service +++ b/debian/systemd/koha-zebra@.service @@ -1,6 +1,7 @@ [Unit] Description=Koha Zebra indexing server for %i PartOf=koha@%i.target +Requires=koha-create-dirs@%i.service After=koha@%i.target [Service] @@ -11,7 +12,6 @@ WorkingDirectory=/var/lib/koha/%i Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml Environment=KOHA_HOME=/usr/share/koha PIDFile=/var/run/koha/%i/zebra.pid -ExecStartPre=+/usr/sbin/koha-create-dirs %i ExecStart=/usr/bin/zebrasrv -f /etc/koha/sites/%i/koha-conf.xml -p /var/run/koha/%i/zebra.pid -D Restart=on-failure RestartSec=30s