]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
man: add more suggestions on how to use StartUnit and JobRemoved
authorLuca Boccassi <bluca@debian.org>
Wed, 17 Jan 2024 16:59:26 +0000 (16:59 +0000)
committerLuca Boccassi <bluca@debian.org>
Thu, 18 Jan 2024 17:22:12 +0000 (17:22 +0000)
This is not immediately clear for users, so spell out the preferred pattern
clearly in the D-Bus documentation.

man/org.freedesktop.systemd1.xml

index e2814b7e42e185e602c66ef96ea5c9692444f921..5f1a5988a0cb6795d2c003cbe8ac83a5f6165af7 100644 (file)
@@ -1291,7 +1291,13 @@ node /org/freedesktop/systemd1 {
       and terminate all units that aren't dependencies of it. If <literal>ignore-dependencies</literal>, it
       will start a unit but ignore all its dependencies. If <literal>ignore-requirements</literal>, it will
       start a unit but only ignore the requirement dependencies. It is not recommended to make use of the
-      latter two options. On completion, this method returns the newly created job object.</para>
+      latter two options. On reply, if successful, this method returns the newly created job object
+      which has been enqueued for asynchronous activation. Callers that want to track the outcome of the
+      actual start operation need to monitor the result of this job. This can be achieved in a race-free
+      manner by first subscribing to the <function>JobRemoved()</function> signal, then calling
+      <function>StartUnit()</function> and using the returned job object to filter out unrelated
+      <function>JobRemoved()</function> signals, until the desired one is received, which will then carry
+      the result of the start operation.</para>
 
       <para><function>StartUnitReplace()</function> is similar to <function>StartUnit()</function> but
       replaces a job that is queued for one unit by a job for another unit.</para>