From 41c4aca21748667925dcdd16121a0cc68f9a7f36 Mon Sep 17 00:00:00 2001 From: Xiaobing <61892277+klsince@users.noreply.github.com> Date: Thu, 15 Sep 2022 15:19:59 -0700 Subject: [PATCH] set MDC so that one can route minion task logs to separate files cleanly (#9400) --- .../taskfactory/TaskFactoryRegistry.java | 5 +++++ pinot-tools/src/main/resources/log4j2.xml | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/pinot-minion/src/main/java/org/apache/pinot/minion/taskfactory/TaskFactoryRegistry.java b/pinot-minion/src/main/java/org/apache/pinot/minion/taskfactory/TaskFactoryRegistry.java index 42ec64ca2dd4..8d87cc69bcc0 100644 --- a/pinot-minion/src/main/java/org/apache/pinot/minion/taskfactory/TaskFactoryRegistry.java +++ b/pinot-minion/src/main/java/org/apache/pinot/minion/taskfactory/TaskFactoryRegistry.java @@ -47,6 +47,7 @@ import org.apache.pinot.minion.executor.TaskExecutorFactoryRegistry; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.slf4j.MDC; /** @@ -85,6 +86,8 @@ public TaskResult run() { .addPhaseTiming(taskType, MinionQueryPhase.TASK_QUEUEING, jobDequeueTimeMs - jobInQueueTimeMs, TimeUnit.MILLISECONDS); try { + // Set taskId in MDC so that one may config logger to route task logs to separate file. + MDC.put("taskId", _taskConfig.getId()); _minionMetrics.addValueToGlobalGauge(MinionGauge.NUMBER_OF_TASKS, 1L); return runInternal(); } finally { @@ -93,6 +96,8 @@ public TaskResult run() { _minionMetrics .addPhaseTiming(taskType, MinionQueryPhase.TASK_EXECUTION, executionTimeMs, TimeUnit.MILLISECONDS); LOGGER.info("Task: {} completed in: {}ms", _taskConfig.getId(), executionTimeMs); + // Clear taskId from MDC to reset it. + MDC.remove("taskId"); } } diff --git a/pinot-tools/src/main/resources/log4j2.xml b/pinot-tools/src/main/resources/log4j2.xml index 66ea8a3d195b..eb5a19af2f32 100644 --- a/pinot-tools/src/main/resources/log4j2.xml +++ b/pinot-tools/src/main/resources/log4j2.xml @@ -39,6 +39,25 @@ + + + + + + + + + + + + + + +