From 8d12e219c578ef1769050a49eb8e857f03928d84 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 28 Mar 2023 22:25:51 +0200 Subject: [PATCH] pid1: add debug log about selected restart interval --- src/core/service.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/core/service.c b/src/core/service.c index aaca001366f..c54738a15f4 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -271,6 +271,7 @@ static void service_start_watchdog(Service *s) { usec_t service_restart_usec(Service *s) { unsigned n_restarts; long double unit; + usec_t value; assert(s); @@ -286,18 +287,20 @@ usec_t service_restart_usec(Service *s) { if (n_restarts <= 1 || s->restart_steps == 0 || s->restart_usec_max == USEC_INFINITY || - s->restart_usec == s->restart_usec_max) - return s->restart_usec; - - if (n_restarts > s->restart_steps) - return s->restart_usec_max; - - /* Enforced in service_verify() and above */ - assert(s->restart_usec_max > s->restart_usec); + s->restart_usec >= s->restart_usec_max) + value = s->restart_usec; + else if (n_restarts > s->restart_steps) + value = s->restart_usec_max; + else { + /* Enforced in service_verify() and above */ + assert(s->restart_usec_max > s->restart_usec); - unit = powl(s->restart_usec_max - s->restart_usec, 1.0L / s->restart_steps); + unit = powl(s->restart_usec_max - s->restart_usec, 1.0L / s->restart_steps); + value = usec_add(s->restart_usec, (usec_t) powl(unit, n_restarts - 1)); + } - return usec_add(s->restart_usec, (usec_t) powl(unit, n_restarts - 1)); + log_unit_debug(UNIT(s), "Restart interval calculated as: %s", FORMAT_TIMESPAN(value, 0)); + return value; } static void service_extend_event_source_timeout(Service *s, sd_event_source *source, usec_t extended) { -- 2.47.3