From fb64be97b5973301c34cb15d83422e83ca083114 Mon Sep 17 00:00:00 2001 From: j4n Date: Mon, 4 May 2026 15:00:16 +0200 Subject: [PATCH] fix(mtail): correct boot ordering and deploy restart logic Correct the systemd unit modifications in 98bc1503 that lead to startup failures in some instances. Switch to After+Wants = network-online.target and add RestartSec=2s to give late-binding more interfaces time to appear. In the deployer, capture the files.template() return value and appropriately set need_restart and daemon_reload. --- cmdeploy/src/cmdeploy/mtail/deployer.py | 6 ++++-- cmdeploy/src/cmdeploy/mtail/mtail.service.j2 | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/cmdeploy/src/cmdeploy/mtail/deployer.py b/cmdeploy/src/cmdeploy/mtail/deployer.py index a2fbf43d..6828abd9 100644 --- a/cmdeploy/src/cmdeploy/mtail/deployer.py +++ b/cmdeploy/src/cmdeploy/mtail/deployer.py @@ -37,7 +37,7 @@ class MtailDeployer(Deployer): def configure(self): # Using our own systemd unit instead of `/usr/lib/systemd/system/mtail.service`. # This allows to read from journalctl instead of log files. - files.template( + unit = files.template( src=get_resource("mtail/mtail.service.j2"), dest="/etc/systemd/system/mtail.service", user="root", @@ -55,7 +55,8 @@ class MtailDeployer(Deployer): group="root", mode="644", ) - self.need_restart = mtail_conf.changed + self.unit_changed = unit.changed + self.need_restart = unit.changed or mtail_conf.changed def activate(self): systemd.service( @@ -64,5 +65,6 @@ class MtailDeployer(Deployer): running=bool(self.mtail_address), enabled=bool(self.mtail_address), restarted=self.need_restart, + daemon_reload=self.unit_changed, ) self.need_restart = False diff --git a/cmdeploy/src/cmdeploy/mtail/mtail.service.j2 b/cmdeploy/src/cmdeploy/mtail/mtail.service.j2 index 981546ab..e2a49f8a 100644 --- a/cmdeploy/src/cmdeploy/mtail/mtail.service.j2 +++ b/cmdeploy/src/cmdeploy/mtail/mtail.service.j2 @@ -1,11 +1,13 @@ [Unit] Description=mtail -After=multi-user.target +After=network-online.target +Wants=network-online.target [Service] Type=simple ExecStart=/bin/sh -c "journalctl -f -o short-iso -n 0 | /usr/local/bin/mtail --address={{ address }} --port={{ port }} --progs /etc/mtail --logtostderr --logs -" Restart=on-failure +RestartSec=2s [Install] WantedBy=multi-user.target