Even watchdog for a service is stopped when freezing the unit is
requested, sd-notify message WATCHDOG=1 or friends may come after
that due to ordering of event priority. In that case,
service_reset_watchdog() is called for frozen unit and thus previously
watchdog was reenabled.
Follow-up for
25178aadb2bd04ef9e63f48c1ef42fb309f9332e.
Fixes #38551 (the second failure case).
static void service_reset_watchdog(Service *s) {
assert(s);
+ if (freezer_state_finish(UNIT(s)->freezer_state) != FREEZER_RUNNING) {
+ log_unit_debug(UNIT(s), "Service is currently %s, skipping resetting watchdog.",
+ freezer_state_to_string(UNIT(s)->freezer_state));
+ return;
+ }
+
dual_timestamp_now(&s->watchdog_timestamp);
service_start_watchdog(s);
}