52b84b
From 9c543783dbe560f4dafa4c2f276e03a4bce0389e Mon Sep 17 00:00:00 2001
52b84b
From: Lennart Poettering <lennart@poettering.net>
52b84b
Date: Wed, 14 Nov 2018 11:08:16 +0100
52b84b
Subject: [PATCH] job: when a job was skipped due to a failed condition, log
52b84b
 about it
52b84b
52b84b
Previously we'd neither show console status output nor log output. Let's
52b84b
fix that, and still log something.
52b84b
52b84b
(cherry picked from commit 9a80f2f4533883d272e6a436512aa7e88cedc549)
52b84b
52b84b
Related: #1737283
52b84b
---
52b84b
 src/core/job.c | 22 ++++++++++++++++++----
52b84b
 1 file changed, 18 insertions(+), 4 deletions(-)
52b84b
52b84b
diff --git a/src/core/job.c b/src/core/job.c
52b84b
index 561ea14682..b9eee91cf3 100644
52b84b
--- a/src/core/job.c
52b84b
+++ b/src/core/job.c
52b84b
@@ -810,6 +810,10 @@ static void job_print_done_status_message(Unit *u, JobType t, JobResult result)
52b84b
         if (t == JOB_RELOAD)
52b84b
                 return;
52b84b
 
52b84b
+        /* No message if the job did not actually do anything due to failed condition. */
52b84b
+        if (t == JOB_START && result == JOB_DONE && !u->condition_result)
52b84b
+                return;
52b84b
+
52b84b
         if (!job_print_done_status_messages[result].word)
52b84b
                 return;
52b84b
 
52b84b
@@ -865,6 +869,20 @@ static void job_log_done_status_message(Unit *u, uint32_t job_id, JobType t, Job
52b84b
         if (log_on_console() && job_print_done_status_messages[result].word)
52b84b
                 return;
52b84b
 
52b84b
+        /* Show condition check message if the job did not actually do anything due to failed condition. */
52b84b
+        if (t == JOB_START && result == JOB_DONE && !u->condition_result) {
52b84b
+                log_struct(LOG_INFO,
52b84b
+                           "MESSAGE=Condition check resulted in %s being skipped.", unit_description(u),
52b84b
+                           "JOB_ID=%" PRIu32, job_id,
52b84b
+                           "JOB_TYPE=%s", job_type_to_string(t),
52b84b
+                           "JOB_RESULT=%s", job_result_to_string(result),
52b84b
+                           LOG_UNIT_ID(u),
52b84b
+                           LOG_UNIT_INVOCATION_ID(u),
52b84b
+                           "MESSAGE_ID=" SD_MESSAGE_UNIT_STARTED_STR);
52b84b
+
52b84b
+                return;
52b84b
+        }
52b84b
+
52b84b
         format = job_get_done_status_message_format(u, t, result);
52b84b
         if (!format)
52b84b
                 return;
52b84b
@@ -917,10 +935,6 @@ static void job_log_done_status_message(Unit *u, uint32_t job_id, JobType t, Job
52b84b
 static void job_emit_done_status_message(Unit *u, uint32_t job_id, JobType t, JobResult result) {
52b84b
         assert(u);
52b84b
 
52b84b
-        /* No message if the job did not actually do anything due to failed condition. */
52b84b
-        if (t == JOB_START && result == JOB_DONE && !u->condition_result)
52b84b
-                return;
52b84b
-
52b84b
         job_log_done_status_message(u, job_id, t, result);
52b84b
         job_print_done_status_message(u, t, result);
52b84b
 }