mirror of
https://github.com/troglobit/finit.git
synced 2026-10-07 16:14:21 +07:00
Fix #279: allow restart:always, restart:-1, of crashing services
This change allows endless restarts, similar to `respawn` but honors `restart_sec`. There is no upper limit on the number of times Finit tries to restart a crashing service. Same as `restart:-1` Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
+3
-1
@@ -1274,6 +1274,8 @@ int service_register(int type, char *cfg, struct rlimit rlimit[], char *file)
|
||||
forking = 1;
|
||||
else if (!strncasecmp(cmd, "manual:yes", 10))
|
||||
manual = 1;
|
||||
else if (!strncasecmp(cmd, "restart:always", 14))
|
||||
restart_max = -1;
|
||||
else if (!strncasecmp(cmd, "restart:", 8))
|
||||
restart_max = atoi(&cmd[8]);
|
||||
else if (!strncasecmp(cmd, "restarttmo:", 11)) /* compat alias */
|
||||
@@ -1759,7 +1761,7 @@ static void service_retry(svc_t *svc)
|
||||
}
|
||||
|
||||
/* Peak instability index */
|
||||
if (*restart_cnt >= svc->restart_max) {
|
||||
if (svc->restart_max != -1 && *restart_cnt >= svc->restart_max) {
|
||||
logit(LOG_CONSOLE | LOG_WARNING, "Service %s keeps crashing, not restarting.",
|
||||
svc_ident(svc, NULL, 0));
|
||||
svc_crashing(svc);
|
||||
|
||||
@@ -139,7 +139,7 @@ typedef struct svc {
|
||||
/* Counters */
|
||||
char once; /* run/task, (at least) once per runlevel */
|
||||
unsigned int restart_tot; /* Total restarts ever, summarized, including `initctl restart` */
|
||||
unsigned char restart_max; /* Maximum number of restarts allowed */
|
||||
int restart_max; /* Maximum number of restarts allowed */
|
||||
int restart_tmo; /* Time required for the service to start. */
|
||||
unsigned char oncrash_action; /* Action to perform in crashed state. */
|
||||
char respawn; /* ttys, or services with `respawn`, never increment restart_cnt */
|
||||
|
||||
Reference in New Issue
Block a user