This is an automated email from the ASF dual-hosted git repository.
xiangfu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git
The following commit(s) were added to refs/heads/master by this push:
new 0a80ad613d Add Obfuscator for task config logging in minion builtin
tasks (#16192)
0a80ad613d is described below
commit 0a80ad613d5b314b833df535a96fd7e909664cbb
Author: Xiang Fu <[email protected]>
AuthorDate: Wed Jun 25 16:35:30 2025 +0800
Add Obfuscator for task config logging in minion builtin tasks (#16192)
- Add Obfuscator import to task executor files that log sensitive config
data
- Replace direct logging of configs with obfuscated versions using new
Obfuscator().toJsonString(configs)
- Wrap logger statements with appropriate level checks (isInfoEnabled,
isErrorEnabled) for performance optimization
- Updated files:
- MergeRollupTaskExecutor
- RealtimeToOfflineSegmentsTaskExecutor
- RefreshSegmentTaskExecutor
- SegmentGenerationAndPushTaskExecutor
- SegmentGenerationAndPushTaskGenerator
- UpsertCompactMergeTaskExecutor
- UpsertCompactionTaskExecutor (already had partial implementation)
This change improves security by preventing sensitive configuration data
from being logged in plain text, while maintaining performance through proper
logger level checks.
---
.../org/apache/pinot/common/utils/PinotAppConfigs.java | 2 +-
.../controller/api/PinotControllerAppConfigsTest.java | 3 +--
.../pinot/minion/taskfactory/TaskFactoryRegistry.java | 2 +-
.../pinot/minion/taskfactory/TaskFactoryRegistryTest.java | 6 ++----
.../minion/tasks/mergerollup/MergeRollupTaskExecutor.java | 10 ++++++++--
.../RealtimeToOfflineSegmentsTaskExecutor.java | 10 ++++++++--
.../tasks/refreshsegment/RefreshSegmentTaskExecutor.java | 11 ++++++++---
.../SegmentGenerationAndPushTaskExecutor.java | 6 +++++-
.../SegmentGenerationAndPushTaskGenerator.java | 14 ++++++++++----
.../upsertcompaction/UpsertCompactionTaskExecutor.java | 13 +++++++++----
.../upsertcompactmerge/UpsertCompactMergeTaskExecutor.java | 10 ++++++++--
.../apache/pinot/server/api/PinotServerAppConfigsTest.java | 3 +--
.../java/org/apache/pinot/spi/env/PinotConfiguration.java | 2 +-
.../main/java/org/apache/pinot/spi/utils/Obfuscator.java | 5 +++--
14 files changed, 66 insertions(+), 31 deletions(-)
diff --git
a/pinot-common/src/main/java/org/apache/pinot/common/utils/PinotAppConfigs.java
b/pinot-common/src/main/java/org/apache/pinot/common/utils/PinotAppConfigs.java
index 6f93bf8a19..0f29c3a287 100644
---
a/pinot-common/src/main/java/org/apache/pinot/common/utils/PinotAppConfigs.java
+++
b/pinot-common/src/main/java/org/apache/pinot/common/utils/PinotAppConfigs.java
@@ -340,7 +340,7 @@ public class PinotAppConfigs {
public String toJSONString() {
try {
- return JsonUtils.objectToPrettyString(new Obfuscator().toJson(this));
+ return JsonUtils.objectToPrettyString(Obfuscator.DEFAULT.toJson(this));
} catch (JsonProcessingException e) {
return e.getMessage();
}
diff --git
a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotControllerAppConfigsTest.java
b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotControllerAppConfigsTest.java
index 4d0ff555e9..9763a156d5 100644
---
a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotControllerAppConfigsTest.java
+++
b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotControllerAppConfigsTest.java
@@ -69,8 +69,7 @@ public class PinotControllerAppConfigsTest {
assertEquals(actualSystemConfig.getTotalSwapSpace(),
expectedSystemConfig.getTotalSwapSpace());
// tests Equals on obfuscated expected and actual
- Obfuscator obfuscator = new Obfuscator();
- String obfuscatedExpectedJson = obfuscator.toJsonString(expected);
+ String obfuscatedExpectedJson = Obfuscator.DEFAULT.toJsonString(expected);
PinotAppConfigs obfuscatedExpected =
JsonUtils.stringToObject(obfuscatedExpectedJson, PinotAppConfigs.class);
assertEquals(actual.getJvmConfig(), obfuscatedExpected.getJvmConfig());
assertEquals(actual.getPinotConfig(), obfuscatedExpected.getPinotConfig());
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 08b192efce..209c33347d 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
@@ -148,7 +148,7 @@ public class TaskFactoryRegistry {
_eventObserver.notifyTaskStart(pinotTaskConfig);
if (LOGGER.isInfoEnabled()) {
LOGGER.info("Start running {}: {} with configs: {}",
pinotTaskConfig.getTaskType(), _taskConfig.getId(),
- new
Obfuscator().toJsonString(pinotTaskConfig.getConfigs()));
+
Obfuscator.DEFAULT.toJsonString(pinotTaskConfig.getConfigs()));
}
try {
diff --git
a/pinot-minion/src/test/java/org/apache/pinot/minion/taskfactory/TaskFactoryRegistryTest.java
b/pinot-minion/src/test/java/org/apache/pinot/minion/taskfactory/TaskFactoryRegistryTest.java
index c4bd06461a..8a0c4e0f25 100644
---
a/pinot-minion/src/test/java/org/apache/pinot/minion/taskfactory/TaskFactoryRegistryTest.java
+++
b/pinot-minion/src/test/java/org/apache/pinot/minion/taskfactory/TaskFactoryRegistryTest.java
@@ -38,8 +38,7 @@ public class TaskFactoryRegistryTest {
configs.put("apiKey", "sk-1234567890abcdef");
configs.put("normalConfig", "normalValue");
- Obfuscator obfuscator = new Obfuscator();
- String obfuscatedJson = obfuscator.toJsonString(configs);
+ String obfuscatedJson = Obfuscator.DEFAULT.toJsonString(configs);
// Verify that sensitive values are masked
Assert.assertTrue(obfuscatedJson.contains("tableName"));
@@ -66,8 +65,7 @@ public class TaskFactoryRegistryTest {
configs.put("password", "");
configs.put("normalConfig", "value");
- Obfuscator obfuscator = new Obfuscator();
- String obfuscatedJson = obfuscator.toJsonString(configs);
+ String obfuscatedJson = Obfuscator.DEFAULT.toJsonString(configs);
// Verify that null and empty values are handled properly
Assert.assertTrue(obfuscatedJson.contains("\"authToken\":\"*****\""));
diff --git
a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/mergerollup/MergeRollupTaskExecutor.java
b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/mergerollup/MergeRollupTaskExecutor.java
index ea0133b5e4..4a2e6bbc0b 100644
---
a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/mergerollup/MergeRollupTaskExecutor.java
+++
b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/mergerollup/MergeRollupTaskExecutor.java
@@ -39,6 +39,7 @@ import org.apache.pinot.spi.config.table.TableConfig;
import org.apache.pinot.spi.data.Schema;
import org.apache.pinot.spi.data.readers.RecordReader;
import org.apache.pinot.spi.recordtransformer.RecordTransformer;
+import org.apache.pinot.spi.utils.Obfuscator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -61,7 +62,9 @@ public class MergeRollupTaskExecutor extends
BaseMultipleSegmentsConversionExecu
_eventObserver.notifyProgress(pinotTaskConfig, "Converting segments: " +
numInputSegments);
String taskType = pinotTaskConfig.getTaskType();
Map<String, String> configs = pinotTaskConfig.getConfigs();
- LOGGER.info("Starting task: {} with configs: {}", taskType, configs);
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info("Starting task: {} with configs: {}", taskType,
Obfuscator.DEFAULT.toJsonString(configs));
+ }
long startMillis = System.currentTimeMillis();
String tableNameWithType = configs.get(MinionConstants.TABLE_NAME_KEY);
@@ -130,7 +133,10 @@ public class MergeRollupTaskExecutor extends
BaseMultipleSegmentsConversionExecu
}
long endMillis = System.currentTimeMillis();
- LOGGER.info("Finished task: {} with configs: {}. Total time: {}ms",
taskType, configs, (endMillis - startMillis));
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info("Finished task: {} with configs: {}. Total time: {}ms",
taskType,
+ Obfuscator.DEFAULT.toJsonString(configs), (endMillis - startMillis));
+ }
List<SegmentConversionResult> results = new ArrayList<>();
for (File outputSegmentDir : outputSegmentDirs) {
String outputSegmentName = outputSegmentDir.getName();
diff --git
a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/realtimetoofflinesegments/RealtimeToOfflineSegmentsTaskExecutor.java
b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/realtimetoofflinesegments/RealtimeToOfflineSegmentsTaskExecutor.java
index f355d94636..850cba6093 100644
---
a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/realtimetoofflinesegments/RealtimeToOfflineSegmentsTaskExecutor.java
+++
b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/realtimetoofflinesegments/RealtimeToOfflineSegmentsTaskExecutor.java
@@ -43,6 +43,7 @@ import
org.apache.pinot.segment.local.segment.readers.PinotSegmentRecordReader;
import org.apache.pinot.spi.config.table.TableConfig;
import org.apache.pinot.spi.data.Schema;
import org.apache.pinot.spi.data.readers.RecordReader;
+import org.apache.pinot.spi.utils.Obfuscator;
import org.apache.pinot.spi.utils.builder.TableNameBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -116,7 +117,9 @@ public class RealtimeToOfflineSegmentsTaskExecutor extends
BaseMultipleSegmentsC
_eventObserver.notifyProgress(pinotTaskConfig, "Converting segments: " +
numInputSegments);
String taskType = pinotTaskConfig.getTaskType();
Map<String, String> configs = pinotTaskConfig.getConfigs();
- LOGGER.info("Starting task: {} with configs: {}", taskType, configs);
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info("Starting task: {} with configs: {}", taskType,
Obfuscator.DEFAULT.toJsonString(configs));
+ }
long startMillis = System.currentTimeMillis();
String realtimeTableName = configs.get(MinionConstants.TABLE_NAME_KEY);
@@ -188,7 +191,10 @@ public class RealtimeToOfflineSegmentsTaskExecutor extends
BaseMultipleSegmentsC
}
long endMillis = System.currentTimeMillis();
- LOGGER.info("Finished task: {} with configs: {}. Total time: {}ms",
taskType, configs, (endMillis - startMillis));
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info("Finished task: {} with configs: {}. Total time: {}ms",
taskType,
+ Obfuscator.DEFAULT.toJsonString(configs), (endMillis - startMillis));
+ }
List<SegmentConversionResult> results = new ArrayList<>();
for (File outputSegmentDir : outputSegmentDirs) {
String outputSegmentName = outputSegmentDir.getName();
diff --git
a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/refreshsegment/RefreshSegmentTaskExecutor.java
b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/refreshsegment/RefreshSegmentTaskExecutor.java
index 9d1b2f7b8c..12e3e1a2c0 100644
---
a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/refreshsegment/RefreshSegmentTaskExecutor.java
+++
b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/refreshsegment/RefreshSegmentTaskExecutor.java
@@ -43,6 +43,7 @@ import org.apache.pinot.spi.config.table.TableConfig;
import org.apache.pinot.spi.data.FieldSpec;
import org.apache.pinot.spi.data.Schema;
import org.apache.pinot.spi.env.PinotConfiguration;
+import org.apache.pinot.spi.utils.Obfuscator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -72,7 +73,9 @@ public class RefreshSegmentTaskExecutor extends
BaseSingleSegmentConversionExecu
String segmentName = configs.get(MinionConstants.SEGMENT_NAME_KEY);
String taskType = pinotTaskConfig.getTaskType();
- LOGGER.info("Starting task: {} with configs: {}", taskType, configs);
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info("Starting task: {} with configs: {}", taskType,
Obfuscator.DEFAULT.toJsonString(configs));
+ }
TableConfig tableConfig = getTableConfig(tableNameWithType);
Schema schema = getSchema(tableNameWithType);
@@ -160,8 +163,10 @@ public class RefreshSegmentTaskExecutor extends
BaseSingleSegmentConversionExecu
.build();
long endMillis = System.currentTimeMillis();
- LOGGER.info("Finished task: {} with configs: {}. Total time: {}ms",
taskType, configs,
- (endMillis - _taskStartTime));
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info("Finished task: {} with configs: {}. Total time: {}ms",
taskType,
+ Obfuscator.DEFAULT.toJsonString(configs), (endMillis -
_taskStartTime));
+ }
return result;
}
diff --git
a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/segmentgenerationandpush/SegmentGenerationAndPushTaskExecutor.java
b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/segmentgenerationandpush/SegmentGenerationAndPushTaskExecutor.java
index 0a800f3f64..fb97f90cc8 100644
---
a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/segmentgenerationandpush/SegmentGenerationAndPushTaskExecutor.java
+++
b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/segmentgenerationandpush/SegmentGenerationAndPushTaskExecutor.java
@@ -54,6 +54,7 @@ import org.apache.pinot.spi.ingestion.batch.spec.TableSpec;
import org.apache.pinot.spi.utils.DataSizeUtils;
import org.apache.pinot.spi.utils.IngestionConfigUtils;
import org.apache.pinot.spi.utils.JsonUtils;
+import org.apache.pinot.spi.utils.Obfuscator;
import org.apache.pinot.spi.utils.retry.AttemptsExceededException;
import org.apache.pinot.spi.utils.retry.RetriableOperationException;
import org.slf4j.Logger;
@@ -114,7 +115,10 @@ public class SegmentGenerationAndPushTaskExecutor extends
BaseTaskExecutor {
@Override
public Object executeTask(PinotTaskConfig pinotTaskConfig)
throws Exception {
- LOGGER.info("Executing SegmentGenerationAndPushTask with task config: {}",
pinotTaskConfig);
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info("Executing SegmentGenerationAndPushTask with task config:
{}",
+ Obfuscator.DEFAULT.toJsonString(pinotTaskConfig));
+ }
Map<String, String> taskConfigs = pinotTaskConfig.getConfigs();
SegmentGenerationAndPushResult.Builder resultBuilder = new
SegmentGenerationAndPushResult.Builder();
File localTempDir = new File(new
File(MinionContext.getInstance().getDataDir(),
"SegmentGenerationAndPushResult"),
diff --git
a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/segmentgenerationandpush/SegmentGenerationAndPushTaskGenerator.java
b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/segmentgenerationandpush/SegmentGenerationAndPushTaskGenerator.java
index 963ab2e369..a90635aab5 100644
---
a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/segmentgenerationandpush/SegmentGenerationAndPushTaskGenerator.java
+++
b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/segmentgenerationandpush/SegmentGenerationAndPushTaskGenerator.java
@@ -50,6 +50,7 @@ import org.apache.pinot.spi.filesystem.PinotFS;
import org.apache.pinot.spi.ingestion.batch.BatchConfigProperties;
import org.apache.pinot.spi.plugin.PluginManager;
import org.apache.pinot.spi.utils.IngestionConfigUtils;
+import org.apache.pinot.spi.utils.Obfuscator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -169,8 +170,11 @@ public class SegmentGenerationAndPushTaskGenerator extends
BaseTaskGenerator {
}
}
} catch (Exception e) {
- LOGGER.error("Unable to generate the SegmentGenerationAndPush task.
[ table configs: {}, task configs: {} ]",
- tableConfig, taskConfigs, e);
+ if (LOGGER.isErrorEnabled()) {
+ LOGGER.error(
+ "Unable to generate the SegmentGenerationAndPush task. [ table
configs: {}, task configs: {} ]",
+ Obfuscator.DEFAULT.toJsonString(tableConfig),
Obfuscator.DEFAULT.toJsonString(taskConfigs), e);
+ }
}
}
}
@@ -224,8 +228,10 @@ public class SegmentGenerationAndPushTaskGenerator extends
BaseTaskGenerator {
}
return pinotTaskConfigs;
} catch (Exception e) {
- LOGGER.error("Unable to generate the SegmentGenerationAndPush task. [
table configs: {}, task configs: {} ]",
- tableConfig, taskConfigs, e);
+ if (LOGGER.isErrorEnabled()) {
+ LOGGER.error("Unable to generate the SegmentGenerationAndPush task. [
table configs: {}, task configs: {} ]",
+ Obfuscator.DEFAULT.toJsonString(tableConfig),
Obfuscator.DEFAULT.toJsonString(taskConfigs), e);
+ }
throw e;
}
}
diff --git
a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/upsertcompaction/UpsertCompactionTaskExecutor.java
b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/upsertcompaction/UpsertCompactionTaskExecutor.java
index 1af5452ab8..1766d1c664 100644
---
a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/upsertcompaction/UpsertCompactionTaskExecutor.java
+++
b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/upsertcompaction/UpsertCompactionTaskExecutor.java
@@ -37,6 +37,7 @@ import
org.apache.pinot.segment.spi.creator.SegmentGeneratorConfig;
import org.apache.pinot.segment.spi.index.metadata.SegmentMetadataImpl;
import org.apache.pinot.spi.config.table.TableConfig;
import org.apache.pinot.spi.data.Schema;
+import org.apache.pinot.spi.utils.Obfuscator;
import org.roaringbitmap.RoaringBitmap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -52,7 +53,9 @@ public class UpsertCompactionTaskExecutor extends
BaseSingleSegmentConversionExe
Map<String, String> configs = pinotTaskConfig.getConfigs();
String segmentName = configs.get(MinionConstants.SEGMENT_NAME_KEY);
String taskType = pinotTaskConfig.getTaskType();
- LOGGER.info("Starting task: {} with configs: {}", taskType, configs);
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info("Starting task: {} with configs: {}", taskType,
Obfuscator.DEFAULT.toJsonString(configs));
+ }
long startMillis = System.currentTimeMillis();
String tableNameWithType = configs.get(MinionConstants.TABLE_NAME_KEY);
@@ -118,9 +121,11 @@ public class UpsertCompactionTaskExecutor extends
BaseSingleSegmentConversionExe
segmentMetadata.getTotalDocs() - totalDocsAfterCompaction);
long endMillis = System.currentTimeMillis();
- LOGGER.info("Finished task: {} with configs: {}. Total time: {}ms. Total
docs before compaction: {}. "
- + "Total docs after compaction: {}.", taskType, configs,
(endMillis - startMillis),
- segmentMetadata.getTotalDocs(), totalDocsAfterCompaction);
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info("Finished task: {} with configs: {}. Total time: {}ms. Total
docs before compaction: {}. "
+ + "Total docs after compaction: {}.", taskType,
Obfuscator.DEFAULT.toJsonString(configs),
+ (endMillis - startMillis), segmentMetadata.getTotalDocs(),
totalDocsAfterCompaction);
+ }
return result;
}
diff --git
a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/upsertcompactmerge/UpsertCompactMergeTaskExecutor.java
b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/upsertcompactmerge/UpsertCompactMergeTaskExecutor.java
index 21e7554de3..c3a898a799 100644
---
a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/upsertcompactmerge/UpsertCompactMergeTaskExecutor.java
+++
b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/upsertcompactmerge/UpsertCompactMergeTaskExecutor.java
@@ -46,6 +46,7 @@ import org.apache.pinot.spi.config.table.TableConfig;
import org.apache.pinot.spi.data.Schema;
import org.apache.pinot.spi.data.readers.RecordReader;
import org.apache.pinot.spi.data.readers.RecordReaderFileConfig;
+import org.apache.pinot.spi.utils.Obfuscator;
import org.apache.pinot.spi.utils.builder.TableNameBuilder;
import org.roaringbitmap.RoaringBitmap;
import org.slf4j.Logger;
@@ -73,7 +74,9 @@ public class UpsertCompactMergeTaskExecutor extends
BaseMultipleSegmentsConversi
_eventObserver.notifyProgress(pinotTaskConfig, "Converting segments: " +
numInputSegments);
String taskType = pinotTaskConfig.getTaskType();
Map<String, String> configs = pinotTaskConfig.getConfigs();
- LOGGER.info("Starting task: {} with configs: {}", taskType, configs);
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info("Starting task: {} with configs: {}", taskType,
Obfuscator.DEFAULT.toJsonString(configs));
+ }
long startMillis = System.currentTimeMillis();
String tableNameWithType = configs.get(MinionConstants.TABLE_NAME_KEY);
@@ -146,7 +149,10 @@ public class UpsertCompactMergeTaskExecutor extends
BaseMultipleSegmentsConversi
.getSkippedRowsFound() + ", sanitized:" +
framework.getSanitizedRowsFound());
long endMillis = System.currentTimeMillis();
- LOGGER.info("Finished task: {} with configs: {}. Total time: {}ms",
taskType, configs, (endMillis - startMillis));
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info("Finished task: {} with configs: {}. Total time: {}ms",
taskType,
+ Obfuscator.DEFAULT.toJsonString(configs), (endMillis - startMillis));
+ }
List<SegmentConversionResult> results = new ArrayList<>();
for (File outputSegmentDir : outputSegmentDirs) {
diff --git
a/pinot-server/src/test/java/org/apache/pinot/server/api/PinotServerAppConfigsTest.java
b/pinot-server/src/test/java/org/apache/pinot/server/api/PinotServerAppConfigsTest.java
index fa498ab5fb..7722c2f56e 100644
---
a/pinot-server/src/test/java/org/apache/pinot/server/api/PinotServerAppConfigsTest.java
+++
b/pinot-server/src/test/java/org/apache/pinot/server/api/PinotServerAppConfigsTest.java
@@ -71,8 +71,7 @@ public class PinotServerAppConfigsTest extends
BaseResourceTest {
Assert.assertEquals(actualSystemConfig.getTotalSwapSpace(),
expectedSystemConfig.getTotalSwapSpace());
// tests Equals on obfuscated expected and actual
- Obfuscator obfuscator = new Obfuscator();
- String obfuscatedExpectedJson = obfuscator.toJsonString(expected);
+ String obfuscatedExpectedJson = Obfuscator.DEFAULT.toJsonString(expected);
PinotAppConfigs obfuscatedExpected =
JsonUtils.stringToObject(obfuscatedExpectedJson, PinotAppConfigs.class);
Assert.assertEquals(actual.getJvmConfig(),
obfuscatedExpected.getJvmConfig());
Assert.assertEquals(actual.getPinotConfig(),
obfuscatedExpected.getPinotConfig());
diff --git
a/pinot-spi/src/main/java/org/apache/pinot/spi/env/PinotConfiguration.java
b/pinot-spi/src/main/java/org/apache/pinot/spi/env/PinotConfiguration.java
index d3ba835dc4..2bf0c2bb9e 100644
--- a/pinot-spi/src/main/java/org/apache/pinot/spi/env/PinotConfiguration.java
+++ b/pinot-spi/src/main/java/org/apache/pinot/spi/env/PinotConfiguration.java
@@ -500,7 +500,7 @@ public class PinotConfiguration {
@Override
public String toString() {
- return new Obfuscator().toJsonString(toMap());
+ return Obfuscator.DEFAULT.toJsonString(toMap());
}
public boolean isEmpty() {
diff --git a/pinot-spi/src/main/java/org/apache/pinot/spi/utils/Obfuscator.java
b/pinot-spi/src/main/java/org/apache/pinot/spi/utils/Obfuscator.java
index 03648c9d08..985f55255d 100644
--- a/pinot-spi/src/main/java/org/apache/pinot/spi/utils/Obfuscator.java
+++ b/pinot-spi/src/main/java/org/apache/pinot/spi/utils/Obfuscator.java
@@ -56,11 +56,13 @@ import java.util.stream.Stream;
* </pre>
*/
public final class Obfuscator {
+
private static final String DEFAULT_MASKED_VALUE = "*****";
private static final List<Pattern> DEFAULT_PATTERNS =
Stream.of("(?i).*secret$", "(?i).*secret[\\s_-]*key$",
"(?i).*api[\\s_-]*key$", "(?i).*password$",
"(?i).*keytab$", "(?i).*token$")
.map(Pattern::compile).collect(Collectors.toList());
+ public static final Obfuscator DEFAULT = new Obfuscator();
private final String _maskedValue;
private final List<Pattern> _patterns;
@@ -70,8 +72,7 @@ public final class Obfuscator {
* values with '*****'
*/
public Obfuscator() {
- _maskedValue = DEFAULT_MASKED_VALUE;
- _patterns = DEFAULT_PATTERNS;
+ this(DEFAULT_MASKED_VALUE, DEFAULT_PATTERNS);
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]