summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
6b78f9b)
When an automatic restart is already queued, then make subsequent start
jobs wait until the restart can be handled (i.e. after the holdhoff
time), instead of simply fail.
* syscall filter: add knowledge about compat syscalls
* syscall filter: add knowledge about compat syscalls
-* flush jobs when switching root
-
-* autorestart of journald after switch-root is broken
-
* logind: wakelock/opportunistic suspend support
* switch-root: sockets need relabelling
* logind: wakelock/opportunistic suspend support
* switch-root: sockets need relabelling
* refuse taking lower-case variable names in sd_journal_send() and friends.
* refuse taking lower-case variable names in sd_journal_send() and friends.
-* when running as user instance: implicitly default to WorkingDirectory=$HOME for all services.
-
* Merge KillUnit()'s mode and who params into one
* load-fragment: when loading a unit file via a chain of symlinks
* Merge KillUnit()'s mode and who params into one
* load-fragment: when loading a unit file via a chain of symlinks
* change Requires=basic.target to RequisiteOverride=basic.target
* change Requires=basic.target to RequisiteOverride=basic.target
-* exclude processes marked with argv[0][0]=@ from the normal service killing too
-
* support rd.luks.allow-discards= kernel cmdline params in cryptsetup generator
* systemctl: when stopping a service which has triggres and warning about it actually check the TriggeredBy= deps fields
* support rd.luks.allow-discards= kernel cmdline params in cryptsetup generator
* systemctl: when stopping a service which has triggres and warning about it actually check the TriggeredBy= deps fields
assert(s);
dbus_error_init(&error);
assert(s);
dbus_error_init(&error);
- if (UNIT(s)->job) {
- log_info("Job pending for unit, delaying automatic restart.");
+ if (UNIT(s)->job && UNIT(s)->job->type == JOB_STOP) {
+ /* Don't restart things if we are going down anyway */
+ log_info("Stop job pending for unit, delaying automatic restart.");
- if ((r = unit_watch_timer(UNIT(s), s->restart_usec, &s->timer_watch)) < 0)
+ r = unit_watch_timer(UNIT(s), s->restart_usec, &s->timer_watch);
+ if (r < 0)
+ /* Note that we stay in the SERVICE_AUTO_RESTART state here,
+ * it will be canceled as part of the service_stop() call that
+ * is executed as part of JOB_RESTART. */
+
log_debug("%s scheduled restart job.", UNIT(s)->id);
return;
log_debug("%s scheduled restart job.", UNIT(s)->id);
return;
* service should be manually restarted, not started. */
if (s->state == SERVICE_AUTO_RESTART) {
log_warning("%s automatic restart is pending, must be stopped before issuing start request.", UNIT(s)->id);
* service should be manually restarted, not started. */
if (s->state == SERVICE_AUTO_RESTART) {
log_warning("%s automatic restart is pending, must be stopped before issuing start request.", UNIT(s)->id);
}
assert(s->state == SERVICE_DEAD || s->state == SERVICE_FAILED);
}
assert(s->state == SERVICE_DEAD || s->state == SERVICE_FAILED);