From: Mike Yuan Date: Mon, 22 May 2023 00:30:30 +0000 (+0800) Subject: core: get rid of unused Service.will_auto_restart logic X-Git-Tag: v254-rc1~389^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=49b34f75e7c801210624e0c7dd00be990873628a;p=thirdparty%2Fsystemd.git core: get rid of unused Service.will_auto_restart logic The announced new behavior for OnFailure= never worked properly, and we've fixed the document instead in #27675. Therefore, let's get rid of the unused logic completely. More at #27594. The to-be-added RestartMode= option should cover the use case hopefully. Closes #27594 --- diff --git a/src/core/service.c b/src/core/service.c index 41e61987712..ad8ff75b142 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -1946,8 +1946,6 @@ static bool service_will_restart(Unit *u) { assert(s); - if (s->will_auto_restart) - return true; if (IN_SET(s->state, SERVICE_DEAD_BEFORE_AUTO_RESTART, SERVICE_FAILED_BEFORE_AUTO_RESTART, SERVICE_AUTO_RESTART)) return true; @@ -1993,19 +1991,14 @@ static void service_enter_dead(Service *s, ServiceResult f, bool allow_restart) log_unit_debug(UNIT(s), "Service restart not allowed."); else { const char *reason; - bool shall_restart; - shall_restart = service_shall_restart(s, &reason); + allow_restart = service_shall_restart(s, &reason); log_unit_debug(UNIT(s), "Service will %srestart (%s)", - shall_restart ? "" : "not ", + allow_restart ? "" : "not ", reason); - if (shall_restart) - s->will_auto_restart = true; } - if (s->will_auto_restart) { - s->will_auto_restart = false; - + if (allow_restart) { /* We make two state changes here: one that maps to the high-level UNIT_INACTIVE/UNIT_FAILED * state (i.e. a state indicating deactivation), and then one that that maps to the * high-level UNIT_STARTING state (i.e. a state indicating activation). We do this so that diff --git a/src/core/service.h b/src/core/service.h index 55c4127deed..0e578c9280b 100644 --- a/src/core/service.h +++ b/src/core/service.h @@ -181,8 +181,6 @@ struct Service { bool main_pid_alien:1; bool bus_name_good:1; bool forbid_restart:1; - /* Keep restart intention between UNIT_FAILED and UNIT_ACTIVATING */ - bool will_auto_restart:1; bool start_timeout_defined:1; bool exec_fd_hot:1; diff --git a/src/core/unit.c b/src/core/unit.c index 3393138bac1..49d289c04d4 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -2777,9 +2777,7 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, UnitNotifyFlag if (ns != os && ns == UNIT_FAILED) { log_unit_debug(u, "Unit entered failed state."); - - if (!(flags & UNIT_NOTIFY_WILL_AUTO_RESTART)) - unit_start_on_failure(u, "OnFailure=", UNIT_ATOM_ON_FAILURE, u->on_failure_job_mode); + unit_start_on_failure(u, "OnFailure=", UNIT_ATOM_ON_FAILURE, u->on_failure_job_mode); } if (UNIT_IS_ACTIVE_OR_RELOADING(ns) && !UNIT_IS_ACTIVE_OR_RELOADING(os)) { @@ -2796,8 +2794,7 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, UnitNotifyFlag unit_log_resources(u); } - if (ns == UNIT_INACTIVE && !IN_SET(os, UNIT_FAILED, UNIT_INACTIVE, UNIT_MAINTENANCE) && - !(flags & UNIT_NOTIFY_WILL_AUTO_RESTART)) + if (ns == UNIT_INACTIVE && !IN_SET(os, UNIT_FAILED, UNIT_INACTIVE, UNIT_MAINTENANCE)) unit_start_on_failure(u, "OnSuccess=", UNIT_ATOM_ON_SUCCESS, u->on_success_job_mode); } diff --git a/src/core/unit.h b/src/core/unit.h index 7e85150643e..3cab35ea4f8 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -904,7 +904,6 @@ void unit_notify_cgroup_oom(Unit *u, bool managed_oom); typedef enum UnitNotifyFlags { UNIT_NOTIFY_RELOAD_FAILURE = 1 << 0, - UNIT_NOTIFY_WILL_AUTO_RESTART = 1 << 1, } UnitNotifyFlags; void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, UnitNotifyFlags flags);