Skip to content

Commit 890ac8f

Browse files
committed
fix: Try fixing spotted bugs
1 parent 2d3ab2f commit 890ac8f

File tree

26 files changed

+87
-24
lines changed

26 files changed

+87
-24
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;
@@ -27,9 +28,15 @@ public class SharedCommunicationObjects {
2728
private final List<Runnable> pausedComponents = new ArrayList<>();
2829
private volatile boolean paused;
2930

31+
@SuppressFBWarnings("PA_PUBLIC_PRIMITIVE_ATTRIBUTE")
3032
public OkHttpClient okHttpClient;
33+
34+
@SuppressFBWarnings("PA_PUBLIC_PRIMITIVE_ATTRIBUTE")
3135
public HttpUrl agentUrl;
36+
37+
@SuppressFBWarnings("PA_PUBLIC_PRIMITIVE_ATTRIBUTE")
3238
public Monitoring monitoring;
39+
3340
private volatile DDAgentFeaturesDiscovery featuresDiscovery;
3441
private ConfigurationPoller configurationPoller;
3542

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;
@@ -189,6 +190,7 @@ public boolean isEnabledByDefault() {
189190
* <p>The Agent is considered to start successfully if Instrumentation can be activated. All other
190191
* pieces are considered optional.
191192
*/
193+
@SuppressFBWarnings("AT_STALE_THREAD_WRITE_OF_PRIMITIVE")
192194
public static void start(
193195
final Object bootstrapInitTelemetry,
194196
final Instrumentation inst,
@@ -436,6 +438,7 @@ private static void injectAgentArgsConfig(String agentArgs) {
436438
}
437439
}
438440

441+
@SuppressFBWarnings("AT_STALE_THREAD_WRITE_OF_PRIMITIVE")
439442
private static void configureCiVisibility(URL agentJarURL) {
440443
// Retro-compatibility for the old way to configure CI Visibility
441444
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-smoke-tests/appsec/springboot-graphql/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ tasks.withType(Test).configureEach {
4040

4141
tasks.register('testRuntimeActivation', Test) {
4242
jvmArgs '-Dsmoke_test.appsec.enabled=inactive',
43-
"-Ddatadog.smoketest.appsec.springboot-graphql.shadowJar.path=${tasks.shadowJar.archiveFile.get()}"
43+
"-Ddatadog.smoketest.appsec.springboot-graphql.shadowJar.path=${tasks.shadowJar.archiveFile.get()}"
4444
}
4545

4646
tasks.named('check') {

dd-smoke-tests/appsec/springboot-security/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ tasks.withType(Test).configureEach {
4646

4747
tasks.register('testRuntimeActivation', Test) {
4848
jvmArgs '-Dsmoke_test.appsec.enabled=inactive',
49-
"-Ddatadog.smoketest.appsec.springbootsecurity.shadowJar.path=${tasks.shadowJar.archiveFile.get()}"
49+
"-Ddatadog.smoketest.appsec.springbootsecurity.shadowJar.path=${tasks.shadowJar.archiveFile.get()}"
5050
}
5151

5252
tasks.named('check') {

dd-trace-core/src/main/java/datadog/trace/common/metrics/AggregateMetric.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,17 @@
22

33
import datadog.trace.core.histogram.Histogram;
44
import datadog.trace.core.histogram.Histograms;
5+
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
56
import java.util.concurrent.atomic.AtomicLongArray;
67

78
/** Not thread-safe. Accumulates counts and durations. */
9+
@SuppressFBWarnings(
10+
value = {
11+
"AT_NONATOMIC_OPERATIONS_ON_SHARED_VARIABLE",
12+
"AT_NONATOMIC_64BIT_PRIMITIVE",
13+
"AT_STALE_THREAD_WRITE_OF_PRIMITIVE"
14+
},
15+
justification = "Explicitly not thread-safe. Accumulates counts and durations.")
816
public final class AggregateMetric {
917

1018
static final long ERROR_TAG = 0x8000000000000000L;

dd-trace-core/src/main/java/datadog/trace/common/writer/ddagent/GenerationalUtf8Cache.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,11 @@
6565
* provide better cache utilization.
6666
*/
6767
@SuppressFBWarnings(
68-
value = "IS2_INCONSISTENT_SYNC",
68+
value = {
69+
"IS2_INCONSISTENT_SYNC",
70+
"AT_NONATOMIC_64BIT_PRIMITIVE",
71+
"AT_STALE_THREAD_WRITE_OF_PRIMITIVE"
72+
},
6973
justification =
7074
"stat updates are deliberately racy - sync is only used to prevent simultaneous bulk updates")
7175
public final class GenerationalUtf8Cache implements EncodingCache {

0 commit comments

Comments
 (0)