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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+