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 <xiangfu.1...@gmail.com> 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: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org