Resolves: RHEL-100553,RHEL-103354,RHEL-104555,RHEL-106260,RHEL-44419,RHEL-72701,RHEL-79976,RHEL-97625,RHEL-97762
47 lines
2.2 KiB
Diff
47 lines
2.2 KiB
Diff
From deddab3df06ee01349b59b680da4224ccd3752c5 Mon Sep 17 00:00:00 2001
|
|
From: Lennart Poettering <lennart@poettering.net>
|
|
Date: Wed, 18 Jun 2025 11:47:06 +0200
|
|
Subject: [PATCH] core: output log cycle path in one log message, not many
|
|
|
|
Fixes: #35642
|
|
(cherry picked from commit 201647e3f2ff04fbaebc1901431b7ff610f995fb)
|
|
|
|
Related: RHEL-106260
|
|
---
|
|
src/core/transaction.c | 21 +++++++++++++++------
|
|
1 file changed, 15 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/src/core/transaction.c b/src/core/transaction.c
|
|
index 7fc0459cd4..9c911aef13 100644
|
|
--- a/src/core/transaction.c
|
|
+++ b/src/core/transaction.c
|
|
@@ -394,13 +394,22 @@ static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsi
|
|
|
|
unit_ids = merge_unit_ids(j->manager->unit_log_field, array); /* ignore error */
|
|
|
|
- STRV_FOREACH_PAIR(unit_id, job_type, array)
|
|
- /* logging for j not k here to provide a consistent narrative */
|
|
+ size_t m = strv_length(array);
|
|
+
|
|
+ _cleanup_free_ char *cycle_path_text = strdup("Found ordering cycle");
|
|
+ if (m > 0) {
|
|
+ (void) strextendf(&cycle_path_text, " on %s/%s", array[0], array[1]);
|
|
+ if (m > 2)
|
|
+ (void) strextendf(&cycle_path_text, "; has dependency on %s/%s", array[2], array[3]);
|
|
+ }
|
|
+
|
|
+ STRV_FOREACH_PAIR(unit_id, job_type, strv_skip(array, 4))
|
|
+ (void) strextendf(&cycle_path_text, ", %s/%s", *unit_id, *job_type);
|
|
+
|
|
+ /* logging for j not k here to provide a consistent narrative */
|
|
+ if (cycle_path_text)
|
|
log_struct(LOG_WARNING,
|
|
- LOG_UNIT_MESSAGE(j->unit,
|
|
- "Found %s on %s/%s",
|
|
- unit_id == array ? "ordering cycle" : "dependency",
|
|
- *unit_id, *job_type),
|
|
+ LOG_UNIT_MESSAGE(j->unit, "%s", cycle_path_text),
|
|
LOG_ITEM("%s", strna(unit_ids)));
|
|
|
|
if (delete) {
|