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:
Richard Phibel
2023-07-06 14:33:52 +02:00
parent 5bc9ea070f
commit e568fea9fc
20 changed files with 129 additions and 1 deletions
+1
View File
@@ -2206,6 +2206,7 @@ static int bus_append_service_property(sd_bus_message *m, const char *field, con
"Type",
"ExitType",
"Restart",
"RestartMode",
"BusName",
"NotifyAccess",
"USBFunctionDescriptors",