service: add new RestartMode option
When this option is set to direct, the service restarts without entering a failed state. Dependent units are not notified of transitory failure. This is useful for the following use case: We have a target with Requires=my-service, After=my-service. my-service.service is a oneshot service and has Restart=on-failure in its definition. my-service.service can get stuck for various reasons and time out, in which case it is restarted. Currently, when it fails the first time, the target fails, even though my-service is restarted. The behavior we're looking for is that until my-service is not restarted anymore, the target stays pending waiting for my-service.service to start successfully or fail without being restarted anymore.
This commit is contained in:
@@ -153,4 +153,17 @@ systemctl restart propagatestopto-indirect.target
|
||||
assert_rc 3 systemctl --quiet is-active propagatestopto-and-pullin.target
|
||||
assert_rc 3 systemctl --quiet is-active sleep-infinity-simple.service
|
||||
|
||||
# Test restart mode direct
|
||||
systemctl start succeeds-on-restart-restartdirect.target
|
||||
assert_rc 0 systemctl --quiet is-active succeeds-on-restart-restartdirect.target
|
||||
|
||||
systemctl start fails-on-restart-restartdirect.target || :
|
||||
assert_rc 3 systemctl --quiet is-active fails-on-restart-restartdirect.target
|
||||
|
||||
systemctl start succeeds-on-restart.target || :
|
||||
assert_rc 3 systemctl --quiet is-active succeeds-on-restart.target
|
||||
|
||||
systemctl start fails-on-restart.target || :
|
||||
assert_rc 3 systemctl --quiet is-active fails-on-restart.target
|
||||
|
||||
touch /testok
|
||||
|
||||
Reference in New Issue
Block a user