Skip to content

Commit 725bbf0

Browse files
committed
share common config key redaction method
1 parent 559ce6c commit 725bbf0

2 files changed

Lines changed: 17 additions & 14 deletions

File tree

dd-java-agent/instrumentation/spark/spark-common/src/main/java/datadog/trace/instrumentation/spark/SparkConfAllowList.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@
1717
* @see <a href="https://spark.apache.org/docs/latest/configuration.html">Spark Configuration</a>
1818
*/
1919
class SparkConfAllowList {
20+
// Using values from
21+
// https://github.com/apache/spark/blob/v3.5.1/core/src/main/scala/org/apache/spark/internal/config/package.scala#L1150-L1158
22+
static final String DEFAULT_REDACTION_REGEX = "(?i)secret|password|token|access.key|api.key";
23+
24+
private static final Pattern DEFAULT_REDACTION_PATTERN = Pattern.compile(DEFAULT_REDACTION_REGEX);
25+
2026
/**
2127
* Job-specific parameters that can be used to control job execution or provide metadata about the
2228
* job being executed
@@ -80,11 +86,17 @@ public static boolean canCaptureJobParameter(String parameterName) {
8086
return allowedJobParams.contains(parameterName);
8187
}
8288

89+
/** Redact a value if the key or value matches the default redaction pattern. */
90+
public static String redactValue(String key, String value) {
91+
if (DEFAULT_REDACTION_PATTERN.matcher(key).find()
92+
|| DEFAULT_REDACTION_PATTERN.matcher(value).find()) {
93+
return "[redacted]";
94+
}
95+
return value;
96+
}
97+
8398
public static List<Map.Entry<String, String>> getRedactedSparkConf(SparkConf conf) {
84-
// Using values from
85-
// https://github.com/apache/spark/blob/v3.5.1/core/src/main/scala/org/apache/spark/internal/config/package.scala#L1150-L1158
86-
String redactionPattern =
87-
conf.get("spark.redaction.regex", "(?i)secret|password|token|access.key|api.key");
99+
String redactionPattern = conf.get("spark.redaction.regex", DEFAULT_REDACTION_REGEX);
88100
List<Map.Entry<String, String>> redacted = new ArrayList<>();
89101
Pattern pattern = Pattern.compile(redactionPattern);
90102

dd-java-agent/instrumentation/spark/spark-common/src/main/java/datadog/trace/instrumentation/spark/SparkLauncherAdvice.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
88
import java.lang.reflect.Field;
99
import java.util.Map;
10-
import java.util.regex.Pattern;
1110
import net.bytebuddy.asm.Advice;
1211
import org.apache.spark.launcher.SparkAppHandle;
1312
import org.slf4j.Logger;
@@ -17,10 +16,6 @@ public class SparkLauncherAdvice {
1716

1817
private static final Logger log = LoggerFactory.getLogger(SparkLauncherAdvice.class);
1918

20-
// Same default pattern as spark.redaction.regex in Spark source
21-
private static final Pattern CONF_REDACTION_PATTERN =
22-
Pattern.compile("(?i)secret|password|token|access.key|api.key");
23-
2419
static volatile AgentSpan launcherSpan;
2520

2621
private static volatile boolean shutdownHookRegistered = false;
@@ -55,11 +50,7 @@ private static void setLauncherConfigTags(AgentSpan span, Object launcher) {
5550
if (conf != null) {
5651
for (Map.Entry<String, String> entry : conf.entrySet()) {
5752
if (SparkConfAllowList.canCaptureJobParameter(entry.getKey())) {
58-
String value = entry.getValue();
59-
if (CONF_REDACTION_PATTERN.matcher(entry.getKey()).find()
60-
|| CONF_REDACTION_PATTERN.matcher(value).find()) {
61-
value = "[redacted]";
62-
}
53+
String value = SparkConfAllowList.redactValue(entry.getKey(), entry.getValue());
6354
span.setTag("config." + entry.getKey().replace('.', '_'), value);
6455
}
6556
}

0 commit comments

Comments
 (0)