chiark / gitweb /
job: also trigger on-failure dependencies when jobs faile due to dependencies, timeout
[elogind.git] / src / job.c
index 54c204b650335ec9d35be6ff5db50d1e286c2c7b..46577fdf7a199384b50da6c19fd34e46c3feb4f1 100644 (file)
--- a/src/job.c
+++ b/src/job.c
@@ -549,6 +549,13 @@ int job_finish_and_invalidate(Job *j, JobResult result) {
                 }
         }
 
+        /* Trigger OnFailure dependencies that are not generated by
+         * the unit itself. We don't tread JOB_CANCELED as failure in
+         * this context. And JOB_FAILURE is already handled by the
+         * unit itself. */
+        if (result == JOB_TIMEOUT || result == JOB_DEPENDENCY)
+                unit_trigger_on_failure(u);
+
         /* Try to start the next jobs that can be started */
         SET_FOREACH(other, u->meta.dependencies[UNIT_AFTER], i)
                 if (other->meta.job)