Skip to content

Commit c2e4db1

Browse files
committed
wip
1 parent 9d6ffc3 commit c2e4db1

File tree

1 file changed

+28
-22
lines changed

1 file changed

+28
-22
lines changed

modules/healthcheck/default.nix

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@
111111
serviceConfig.TimeoutStartSec = lib.mkForce "infinity";
112112

113113
# We add a ExecStartPost with a script that runs the readiness probe
114-
serviceConfig.ExecStartPost =
114+
serviceConfig.ExecStartPre =
115115
let
116116
scriptPath = lib.makeBinPath (
117117
[
@@ -126,29 +126,35 @@
126126
pkgs.writeShellScript "${mainServiceName}-readiness-check" ''
127127
#!${pkgs.runtimeShell}
128128
set -o nounset
129-
export PATH="${scriptPath}:$PATH"
130-
131-
echo "Health check: starting background readiness probe for ${mainServiceName}."
132-
sleep ${toString probeCfg.initialDelay}
133-
retryCount=${toString probeCfg.retryCount}
134-
while true; do
135-
if (timeout ${toString probeCfg.timeout}s ${probeCfg.command} &> /dev/null); then
136-
echo "Health check: probe successful. Notifying systemd that the service is ready."
137-
systemd-notify --ready --status="${probeCfg.statusReadyMessage}"
138-
exit 0
139-
else
140-
echo "Health check: probe not successful. Notifying systemd that the service is still waiting. Retrying in ${toString probeCfg.interval} seconds..."
141-
systemd-notify --status="${probeCfg.statusWaitingMessage}"
142-
if [[ ''${retryCount} -ne -1 ]]; then
143-
retryCount=$((retryCount - 1))
144-
if [[ ''${retryCount} -le 0 ]]; then
145-
echo "Health check: probe failed after maximum retries. Exiting."
146-
exit 1
129+
130+
export NOTIFY_SOCKET
131+
monitor() {
132+
export PATH="${scriptPath}:$PATH"
133+
134+
echo "Health check: starting background readiness probe for ${mainServiceName}." 1>>/tmp/banica1 2>>/tmp/banica2
135+
sleep ${toString probeCfg.initialDelay}
136+
retryCount=${toString probeCfg.retryCount}
137+
while true; do
138+
if (timeout ${toString probeCfg.timeout}s ${probeCfg.command} &> /dev/null); then
139+
echo "Health check: probe successful. Notifying systemd that the service is ready." 1>>/tmp/banica1 2>>/tmp/banica2
140+
systemd-notify --ready --status="${probeCfg.statusReadyMessage}" 1>>/tmp/banica1 2>>/tmp/banica2
141+
exit 0
142+
else
143+
echo "Health check: probe not successful. Notifying systemd that the service is still waiting. Retrying in ${toString probeCfg.interval} seconds..." 1>>/tmp/banica1 2>>/tmp/banica2
144+
systemd-notify --status="${probeCfg.statusWaitingMessage}" 1>>/tmp/banica1 2>>/tmp/banica2
145+
if [[ ''${retryCount} -ne -1 ]]; then
146+
retryCount=$((retryCount - 1))
147+
if [[ ''${retryCount} -le 0 ]]; then
148+
echo "Health check: probe failed after maximum retries. Exiting." 1>>/tmp/banica1 2>>/tmp/banica2
149+
exit 1
150+
fi
147151
fi
148152
fi
149-
fi
150-
sleep ${toString probeCfg.interval}
151-
done
153+
sleep ${toString probeCfg.interval}
154+
done
155+
}
156+
157+
monitor &
152158
'';
153159
}
154160
))

0 commit comments

Comments
 (0)