diff --git a/core/src/main/java/io/kestra/core/runners/DefaultRunContext.java b/core/src/main/java/io/kestra/core/runners/DefaultRunContext.java index 8959f87c3bb..6ed73dfb33e 100644 --- a/core/src/main/java/io/kestra/core/runners/DefaultRunContext.java +++ b/core/src/main/java/io/kestra/core/runners/DefaultRunContext.java @@ -474,6 +474,8 @@ public void cleanup() { } catch (IOException ex) { logger().warn("Unable to cleanup worker task", ex); } + + logger.resetMDC(); } /** diff --git a/core/src/main/java/io/kestra/core/runners/ExecutorService.java b/core/src/main/java/io/kestra/core/runners/ExecutorService.java index 3e3821518b2..7d34c8af8c6 100644 --- a/core/src/main/java/io/kestra/core/runners/ExecutorService.java +++ b/core/src/main/java/io/kestra/core/runners/ExecutorService.java @@ -407,7 +407,7 @@ private Executor onEnd(Executor executor) { logService.logExecution( newExecution, - flow.logger(), + logger, Level.INFO, "Flow completed with state {} in {}", newExecution.getState().getCurrent(), diff --git a/core/src/main/java/io/kestra/core/runners/RunContext.java b/core/src/main/java/io/kestra/core/runners/RunContext.java index a2fe904fc13..0366e34ae1a 100644 --- a/core/src/main/java/io/kestra/core/runners/RunContext.java +++ b/core/src/main/java/io/kestra/core/runners/RunContext.java @@ -126,6 +126,7 @@ public abstract class RunContext { /** * Cleanup any temporary resources, files created through this context. + * Also reset logs MDC so the logger should not be used after this point. */ public abstract void cleanup(); diff --git a/core/src/main/java/io/kestra/core/runners/RunContextLogger.java b/core/src/main/java/io/kestra/core/runners/RunContextLogger.java index 15e4a741291..1b08ea6d6db 100644 --- a/core/src/main/java/io/kestra/core/runners/RunContextLogger.java +++ b/core/src/main/java/io/kestra/core/runners/RunContextLogger.java @@ -192,6 +192,10 @@ public org.slf4j.Logger logger() { return this.logger; } + public void resetMDC() { + MDC.clear(); + } + @Override public org.slf4j.Logger get() { return logger(); diff --git a/core/src/main/java/io/kestra/core/runners/Worker.java b/core/src/main/java/io/kestra/core/runners/Worker.java index 8389e99e6f2..fe4d9dabfed 100644 --- a/core/src/main/java/io/kestra/core/runners/Worker.java +++ b/core/src/main/java/io/kestra/core/runners/Worker.java @@ -398,8 +398,8 @@ private void handleTask(final WorkerTask workerTask) { } } } finally { - runContext.cleanup(); this.logTerminated(workerTask); + runContext.cleanup(); } } else { throw new RuntimeException("Unable to process the task '" + workerTask.getTask().getId() + "' as it's not a runnable task"); @@ -570,8 +570,6 @@ private void handleTrigger(WorkerTrigger workerTrigger) { } catch (Exception e) { this.handleTriggerError(workerTrigger, e); } finally { - workerTrigger.getConditionContext().getRunContext().cleanup(); - logService.logTrigger( workerTrigger.getTriggerContext(), runContext.logger(), @@ -580,6 +578,8 @@ private void handleTrigger(WorkerTrigger workerTrigger) { workerTrigger.getTrigger().getType(), DurationFormatUtils.formatDurationHMS(stopWatch.getTime(TimeUnit.MILLISECONDS)) ); + + workerTrigger.getConditionContext().getRunContext().cleanup(); } this.evaluateTriggerRunningCount.get(workerTrigger.getTriggerContext().uid()).addAndGet(-1); @@ -691,12 +691,12 @@ private WorkerTaskResult run(WorkerTask workerTask, Boolean cleanUp) { } return workerTaskResult; } finally { + this.logTerminated(workerTask); + // remove tmp directory if (cleanUp) { workerTask.getRunContext().cleanup(); } - - this.logTerminated(workerTask); } }