From b7a3167c875e865a57915cffc42238f702e2437c Mon Sep 17 00:00:00 2001 From: delchev Date: Tue, 4 Aug 2026 18:48:34 +0300 Subject: [PATCH] fix(java): log a successful compile batch at INFO - a recovered batch must be visible The batch failure logs at ERROR but the success logged at DEBUG. After a mid-publish failure (consumers compiled before their dependency project arrived), the next cycle recovers automatically - but at default log level the stale failure ERROR remains the log's last compile line, and a fully green system diagnoses as dead. The batch runs only when the source set changed, so the INFO line is once-per-rebuild, not noise. Co-authored-by: Claude Fable 5 --- .../dirigible/engine/java/runtime/JavaSourceCompiler.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/components/engine/engine-java/src/main/java/org/eclipse/dirigible/engine/java/runtime/JavaSourceCompiler.java b/components/engine/engine-java/src/main/java/org/eclipse/dirigible/engine/java/runtime/JavaSourceCompiler.java index 864615408b1..fc9549d9798 100644 --- a/components/engine/engine-java/src/main/java/org/eclipse/dirigible/engine/java/runtime/JavaSourceCompiler.java +++ b/components/engine/engine-java/src/main/java/org/eclipse/dirigible/engine/java/runtime/JavaSourceCompiler.java @@ -141,7 +141,11 @@ public BatchResult compileBatch(List units) { Map failures = buckets.failures(); if (failures.isEmpty()) { - LOGGER.debug("Compiled batch: [{}] units, [{}] class file(s), no failures", units.size(), bytecode.size()); + // INFO, not DEBUG: the batch runs only when the source set changed, and after a + // mid-publish failure this line is the ONLY visible evidence that the next cycle + // recovered - at DEBUG the stale failure ERROR stays the log's last word and a + // green system diagnoses as dead. + LOGGER.info("Compiled batch: [{}] units, [{}] class file(s), no failures", units.size(), bytecode.size()); } else { LOGGER.error("Compiled batch: [{}] units, [{}] class file(s); [{}] unit(s) failed to compile: {}", units.size(), bytecode.size(), failures.size(), failures.keySet());