Skip to content

Commit 2791554

Browse files
committed
fix(AgentBootstrap): add an exception in double injection check for log4j patch agent
1 parent c79bf57 commit 2791554

File tree

1 file changed

+33
-21
lines changed

1 file changed

+33
-21
lines changed

dd-java-agent/src/main/java/datadog/trace/bootstrap/AgentBootstrap.java

Lines changed: 33 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -284,31 +284,43 @@ static int parseJavaMajorVersion(String version) {
284284
}
285285

286286
static boolean shouldAbortDueToOtherJavaAgents() {
287-
// Simply considering having multiple agents
288-
if (getConfig(LIB_INJECTION_ENABLED_FLAG)
289-
&& !getConfig(LIB_INJECTION_FORCE_FLAG)
290-
&& getAgentFilesFromVMArguments().size() > 1) {
291-
// Formatting agent file list, Java 7 style
292-
StringBuilder agentFiles = new StringBuilder();
293-
boolean first = true;
287+
// We don't abort if either
288+
// * We are not using SSI
289+
// * Injection is forced
290+
// * There is only one agent
291+
if (!getConfig(LIB_INJECTION_ENABLED_FLAG) || getConfig(LIB_INJECTION_FORCE_FLAG) || getAgentFilesFromVMArguments().size() <= 1) {
292+
return false;
293+
}
294+
295+
// If there are 2 agents and one of them is for patching log4j, it's fine
296+
if (getAgentFilesFromVMArguments().size() == 2) {
294297
for (File agentFile : getAgentFilesFromVMArguments()) {
295-
if (first) {
296-
first = false;
297-
} else {
298-
agentFiles.append(", ");
298+
if (agentFile.getName().toLowerCase.contains("log4j")) {
299+
return false;
299300
}
300-
agentFiles.append('"');
301-
agentFiles.append(agentFile.getAbsolutePath());
302-
agentFiles.append('"');
303301
}
304-
System.err.println(
305-
"Info: multiple JVM agents detected, found "
306-
+ agentFiles
307-
+ ". Loading multiple APM/Tracing agent is not a recommended or supported configuration."
308-
+ "Please set the DD_INJECT_FORCE configuration to TRUE to load Datadog APM/Tracing agent.");
309-
return true;
310302
}
311-
return false;
303+
304+
// Simply considering having multiple agents
305+
// Formatting agent file list, Java 7 style
306+
StringBuilder agentFiles = new StringBuilder();
307+
boolean first = true;
308+
for (File agentFile : getAgentFilesFromVMArguments()) {
309+
if (first) {
310+
first = false;
311+
} else {
312+
agentFiles.append(", ");
313+
}
314+
agentFiles.append('"');
315+
agentFiles.append(agentFile.getAbsolutePath());
316+
agentFiles.append('"');
317+
}
318+
System.err.println(
319+
"Info: multiple JVM agents detected, found "
320+
+ agentFiles
321+
+ ". Loading multiple APM/Tracing agent is not a recommended or supported configuration."
322+
+ "Please set the DD_INJECT_FORCE configuration to TRUE to load Datadog APM/Tracing agent.");
323+
return true;
312324
}
313325

314326
public static void main(final String[] args) {

0 commit comments

Comments
 (0)