mirror of
https://github.com/troglobit/finit.git
synced 2026-10-29 12:40:44 +00:00
Fix #378: warn on console if run/task times out during bootstrap
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
1 parent
fbb3779d17
commit
f2218836af
3 files changed
+17
-6
No files matched your search
+4
-1
@@ -2609,6 +2609,7 @@ void service_runtask_clean(void)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* service_completed - Have run/task completed in current runlevel
|
* service_completed - Have run/task completed in current runlevel
|
||||||
|
* @svcp: On %FALSE return, this points to the first incomplete svc
|
||||||
*
|
*
|
||||||
* This function checks if all run/task have run once in the current
|
* This function checks if all run/task have run once in the current
|
||||||
* runlevel. E.g., at bootstrap we must wait for these scripts or
|
* runlevel. E.g., at bootstrap we must wait for these scripts or
|
||||||
@@ -2621,7 +2622,7 @@ void service_runtask_clean(void)
|
|||||||
* Returns:
|
* Returns:
|
||||||
* %TRUE(1) or %FALSE(0)
|
* %TRUE(1) or %FALSE(0)
|
||||||
*/
|
*/
|
||||||
int service_completed(void)
|
int service_completed(svc_t **svcp)
|
||||||
{
|
{
|
||||||
svc_t *svc, *iter = NULL;
|
svc_t *svc, *iter = NULL;
|
||||||
|
|
||||||
@@ -2643,6 +2644,8 @@ int service_completed(void)
|
|||||||
|
|
||||||
if (!svc->once) {
|
if (!svc->once) {
|
||||||
dbg("%s has not yet completed ...", svc_ident(svc, NULL, 0));
|
dbg("%s has not yet completed ...", svc_ident(svc, NULL, 0));
|
||||||
|
if (svcp)
|
||||||
|
*svcp = svc;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
dbg("%s has completed ...", svc_ident(svc, NULL, 0));
|
dbg("%s has completed ...", svc_ident(svc, NULL, 0));
|
||||||
|
|||||||
+1
-1
@@ -49,7 +49,7 @@ int service_step (svc_t *svc);
|
|||||||
void service_step_all (int types);
|
void service_step_all (int types);
|
||||||
void service_worker (void *unused);
|
void service_worker (void *unused);
|
||||||
|
|
||||||
int service_completed (void);
|
int service_completed (svc_t **svc);
|
||||||
void service_notify_reconf (void);
|
void service_notify_reconf (void);
|
||||||
|
|
||||||
void service_init (uev_ctx_t *ctx);
|
void service_init (uev_ctx_t *ctx);
|
||||||
|
|||||||
@@ -53,21 +53,29 @@ sm_t sm;
|
|||||||
static void sm_check_bootstrap(void *work)
|
static void sm_check_bootstrap(void *work)
|
||||||
{
|
{
|
||||||
static int timeout = 120;
|
static int timeout = 120;
|
||||||
int level = cfglevel;
|
int bootstrap_done;
|
||||||
|
int level = cfglevel;
|
||||||
|
svc_t *svc = NULL;
|
||||||
|
|
||||||
dbg("Step all services ...");
|
dbg("Step all services ...");
|
||||||
service_step_all(SVC_TYPE_ANY);
|
service_step_all(SVC_TYPE_ANY);
|
||||||
|
|
||||||
if (timeout-- > 0 && !service_completed()) {
|
bootstrap_done = service_completed(&svc);
|
||||||
|
if (timeout-- > 0 && !bootstrap_done) {
|
||||||
dbg("Not all bootstrap run/tasks have completed yet ... %d", timeout);
|
dbg("Not all bootstrap run/tasks have completed yet ... %d", timeout);
|
||||||
schedule_work(work);
|
schedule_work(work);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (timeout > 0)
|
if (timeout > 0) {
|
||||||
dbg("All run/task have completed, resuming bootstrap.");
|
dbg("All run/task have completed, resuming bootstrap.");
|
||||||
else
|
} else {
|
||||||
dbg("Timeout, resuming bootstrap.");
|
dbg("Timeout, resuming bootstrap.");
|
||||||
|
if (svc)
|
||||||
|
print(2, "Timeout waiting for %s to run, resuming bootstrap", svc_ident(svc, NULL, 0));
|
||||||
|
else
|
||||||
|
print(2, "Timeout waiting for unknown run/task, resuming bootstrap");
|
||||||
|
}
|
||||||
|
|
||||||
dbg("Flushing pending .conf file events ...");
|
dbg("Flushing pending .conf file events ...");
|
||||||
conf_flush_events();
|
conf_flush_events();
|
||||||
|
|||||||
Reference in new issue
Block a user