Skip to content

Commit 88ef442

Browse files
committed
fix: Try fixing spotted bugs
# Conflicts: # communication/src/main/java/datadog/communication/ddagent/SharedCommunicationObjects.java # utils/test-utils/src/main/groovy/datadog/trace/test/util/DDSpecification.groovy
1 parent ca82eea commit 88ef442

File tree

64 files changed

+163
-123
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+163
-123
lines changed

communication/src/main/java/datadog/communication/ddagent/SharedCommunicationObjects.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import datadog.remoteconfig.DefaultConfigurationPoller;
1212
import datadog.trace.api.Config;
1313
import datadog.trace.util.AgentTaskScheduler;
14+
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
1415
import java.security.Security;
1516
import java.util.ArrayList;
1617
import java.util.List;
@@ -31,6 +32,7 @@ public class SharedCommunicationObjects {
3132
* HTTP client for making requests to Datadog agent. Depending on configuration, this client may
3233
* use regular HTTP, UDS or named pipe.
3334
*/
35+
@SuppressFBWarnings("PA_PUBLIC_PRIMITIVE_ATTRIBUTE")
3436
public OkHttpClient agentHttpClient;
3537

3638
/**
@@ -39,10 +41,15 @@ public class SharedCommunicationObjects {
3941
*/
4042
private volatile OkHttpClient intakeHttpClient;
4143

44+
@SuppressFBWarnings("PA_PUBLIC_PRIMITIVE_ATTRIBUTE")
4245
public long httpClientTimeout;
46+
@SuppressFBWarnings("PA_PUBLIC_PRIMITIVE_ATTRIBUTE")
4347
public boolean forceClearTextHttpForIntakeClient;
4448
public HttpUrl agentUrl;
49+
50+
@SuppressFBWarnings("PA_PUBLIC_PRIMITIVE_ATTRIBUTE")
4551
public Monitoring monitoring;
52+
4653
private volatile DDAgentFeaturesDiscovery featuresDiscovery;
4754
private ConfigurationPoller configurationPoller;
4855

communication/src/main/java/datadog/communication/monitor/DDAgentStatsDClientManager.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
public final class DDAgentStatsDClientManager implements StatsDClientManager {
1515
private static final DDAgentStatsDClientManager INSTANCE = new DDAgentStatsDClientManager();
1616

17+
private DDAgentStatsDClientManager() {}
18+
1719
private static final boolean USE_LOGGING_CLIENT =
1820
LOGGING_WRITER_TYPE.equals(Config.get().getWriterType());
1921

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
import datadog.trace.util.AgentTaskScheduler;
5757
import datadog.trace.util.AgentThreadFactory.AgentThread;
5858
import datadog.trace.util.throwable.FatalAgentMisconfigurationError;
59+
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
5960
import java.lang.instrument.Instrumentation;
6061
import java.lang.reflect.InvocationTargetException;
6162
import java.lang.reflect.Method;
@@ -190,6 +191,7 @@ public boolean isEnabledByDefault() {
190191
* <p>The Agent is considered to start successfully if Instrumentation can be activated. All other
191192
* pieces are considered optional.
192193
*/
194+
@SuppressFBWarnings("AT_STALE_THREAD_WRITE_OF_PRIMITIVE")
193195
public static void start(
194196
final Object bootstrapInitTelemetry,
195197
final Instrumentation inst,
@@ -438,6 +440,7 @@ private static void injectAgentArgsConfig(String agentArgs) {
438440
}
439441
}
440442

443+
@SuppressFBWarnings("AT_STALE_THREAD_WRITE_OF_PRIMITIVE")
441444
private static void configureCiVisibility(URL agentJarURL) {
442445
// Retro-compatibility for the old way to configure CI Visibility
443446
if ("true".equals(ddGetProperty("dd.integration.junit.enabled"))

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public static PatchLogger getAnonymousLogger(final String resourceBundleName) {
2929
return SAFE_LOGGER;
3030
}
3131

32-
protected PatchLogger(final String name, final String resourceBundleName) {
32+
private PatchLogger(final String name, final String resourceBundleName) {
3333
// super(name, resourceBundleName);
3434
}
3535

dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/jms/SessionState.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import datadog.trace.api.Config;
44
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
5-
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
65
import java.util.ArrayDeque;
76
import java.util.Collections;
87
import java.util.Comparator;
@@ -65,7 +64,6 @@ public int compare(Map.Entry<Thread, TimeInQueue> o1, Map.Entry<Thread, TimeInQu
6564
private volatile int timeInQueueSpanCount = 0;
6665

6766
// this field is protected by synchronization of capturedSpans, but SpotBugs miss that
68-
@SuppressFBWarnings("IS2_INCONSISTENT_SYNC")
6967
private boolean capturingFlipped = false;
7068

7169
public SessionState(int ackMode, boolean timeInQueueEnabled) {

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/execution/RetryUntilSuccessful.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@
33
import datadog.trace.api.civisibility.execution.TestExecutionPolicy;
44
import datadog.trace.api.civisibility.execution.TestStatus;
55
import datadog.trace.api.civisibility.telemetry.tag.RetryReason;
6+
import java.util.concurrent.atomic.AtomicBoolean;
67
import java.util.concurrent.atomic.AtomicInteger;
78

89
/** Retries a test case if it failed, up to a maximum number of times. */
910
public class RetryUntilSuccessful implements TestExecutionPolicy {
1011

1112
private final int maxExecutions;
1213
private final boolean suppressFailures;
13-
private int executions;
14-
private boolean successfulExecutionSeen;
14+
private final AtomicInteger executions = new AtomicInteger(0);
15+
private final AtomicBoolean successfulExecutionSeen = new AtomicBoolean(false);
1516

1617
/** Total retry counter that is shared by all retry until successful policies (currently ATR) */
1718
private final AtomicInteger totalRetryCount;
@@ -21,29 +22,29 @@ public RetryUntilSuccessful(
2122
this.maxExecutions = maxExecutions;
2223
this.suppressFailures = suppressFailures;
2324
this.totalRetryCount = totalRetryCount;
24-
this.executions = 0;
2525
}
2626

2727
@Override
2828
public ExecutionOutcome registerExecution(TestStatus status, long durationMillis) {
29-
++executions;
30-
successfulExecutionSeen |= (status != TestStatus.fail);
31-
if (executions > 1) {
29+
int execs = executions.incrementAndGet();
30+
boolean success = successfulExecutionSeen.get() | (status != TestStatus.fail);
31+
successfulExecutionSeen.set(success);
32+
if (execs > 1) {
3233
totalRetryCount.incrementAndGet();
3334
}
3435

3536
boolean lastExecution = !retriesLeft();
36-
boolean retry = executions > 1; // first execution is not a retry
37+
boolean retry = execs > 1; // first execution is not a retry
3738
return new ExecutionOutcomeImpl(
3839
status == TestStatus.fail && (!lastExecution || suppressFailures),
3940
lastExecution,
40-
lastExecution && !successfulExecutionSeen,
41+
lastExecution && !success,
4142
false,
4243
retry ? RetryReason.atr : null);
4344
}
4445

4546
private boolean retriesLeft() {
46-
return !successfulExecutionSeen && executions < maxExecutions;
47+
return !successfulExecutionSeen.get() && executions.get() < maxExecutions;
4748
}
4849

4950
@Override
@@ -57,7 +58,7 @@ public boolean applicable() {
5758
public boolean suppressFailures() {
5859
// do not suppress failures for last execution (unless flag to suppress all failures is set);
5960
// the +1 is because this method is called _before_ subsequent execution is registered
60-
return executions + 1 < maxExecutions || suppressFailures;
61+
return executions.get() + 1 < maxExecutions || suppressFailures;
6162
}
6263

6364
@Override

dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/util/DebuggerMetrics.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import datadog.communication.monitor.DDAgentStatsDClientManager;
44
import datadog.trace.api.Config;
55
import datadog.trace.api.StatsDClient;
6+
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
67

78
/** implements a StatsD client for internal debugger agent metrics */
89
public class DebuggerMetrics implements StatsDClient {
@@ -29,6 +30,9 @@ private DebuggerMetrics(Config config) {
2930
}
3031
}
3132

33+
@SuppressFBWarnings(
34+
value = "SING_SINGLETON_GETTER_NOT_SYNCHRONIZED",
35+
justification = "initialized in a single thread")
3236
public static DebuggerMetrics getInstance(Config config) {
3337
if (INSTANCE == null) {
3438
INSTANCE = new DebuggerMetrics(config);

dd-java-agent/agent-iast/iast-test-fixtures/src/main/groovy/com/datadog/iast/test/IastRequestTestRunner.groovy

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@ import datadog.trace.agent.test.utils.OkHttpUtils
66
import datadog.trace.api.gateway.IGSpanInfo
77
import datadog.trace.api.gateway.RequestContext
88
import datadog.trace.api.gateway.RequestContextSlot
9+
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings
910
import okhttp3.OkHttpClient
1011

1112
import java.util.concurrent.LinkedBlockingQueue
1213
import java.util.concurrent.TimeUnit
1314

15+
@SuppressFBWarnings("HSM_HIDING_METHOD")
1416
class IastRequestTestRunner extends IastAgentTestRunner implements IastRequestContextPreparationTrait {
1517

1618
private static final LinkedBlockingQueue<TaintedObjectCollection> TAINTED_OBJECTS = new LinkedBlockingQueue<>()

dd-java-agent/agent-iast/src/main/java/com/datadog/iast/IastSystem.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
import datadog.trace.api.iast.telemetry.Verbosity;
5656
import datadog.trace.util.AgentTaskScheduler;
5757
import datadog.trace.util.stacktrace.StackWalkerFactory;
58+
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
5859
import java.lang.instrument.Instrumentation;
5960
import java.lang.reflect.Constructor;
6061
import java.lang.reflect.UndeclaredThrowableException;
@@ -70,7 +71,11 @@
7071
public class IastSystem {
7172

7273
private static final Logger LOGGER = LoggerFactory.getLogger(IastSystem.class);
74+
75+
@SuppressFBWarnings("PA_PUBLIC_PRIMITIVE_ATTRIBUTE")
7376
public static boolean DEBUG = false;
77+
78+
@SuppressFBWarnings("PA_PUBLIC_PRIMITIVE_ATTRIBUTE")
7479
public static Verbosity VERBOSITY = Verbosity.OFF;
7580

7681
public static void start(final SubscriptionService ss) {

dd-java-agent/agent-iast/src/main/java/com/datadog/iast/propagation/StringModuleImpl.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,6 @@ public void onStringConcatFactory(
224224
}
225225

226226
@Override
227-
@SuppressFBWarnings("ES_COMPARING_PARAMETER_STRING_WITH_EQ")
228227
public void onStringSubSequence(
229228
@Nonnull CharSequence self, int beginIndex, int endIndex, @Nullable CharSequence result) {
230229
if (self == result || !canBeTainted(result)) {
@@ -722,7 +721,6 @@ public void onStringReplace(
722721

723722
/** This method is used to make an {@code CallSite.Around} of the {@code String.replace} method */
724723
@Override
725-
@SuppressFBWarnings("ES_COMPARING_PARAMETER_STRING_WITH_EQ")
726724
public String onStringReplace(
727725
@Nonnull String self, CharSequence oldCharSeq, CharSequence newCharSeq) {
728726
final IastContext ctx = IastContext.Provider.get();
@@ -805,7 +803,6 @@ public String onStringReplace(
805803
}
806804

807805
@Override
808-
@SuppressFBWarnings("ES_COMPARING_PARAMETER_STRING_WITH_EQ")
809806
public void onStringValueOf(Object param, @Nonnull String result) {
810807
if (param == null || !canBeTainted(result)) {
811808
return;

0 commit comments

Comments
 (0)