diff --git a/README.md b/README.md
index a7bdde842..babac5460 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
[](https://github.com/arextest/arex-agent-java/actions/workflows/build.yml)
-[](https://app.codecov.io/gh/arextest/arex-agent-java)
+[](https://sonarcloud.io/summary/overall?id=arextest_arex-agent-java)
[](https://sonarcloud.io/summary/new_code?id=arextest_arex-agent-java)
#
AREX
diff --git a/arex-agent-bootstrap/src/main/java/io/arex/agent/bootstrap/InstrumentationHolder.java b/arex-agent-bootstrap/src/main/java/io/arex/agent/bootstrap/InstrumentationHolder.java
index 8f993cf65..7b7d9006d 100644
--- a/arex-agent-bootstrap/src/main/java/io/arex/agent/bootstrap/InstrumentationHolder.java
+++ b/arex-agent-bootstrap/src/main/java/io/arex/agent/bootstrap/InstrumentationHolder.java
@@ -3,9 +3,9 @@
import java.lang.instrument.Instrumentation;
public class InstrumentationHolder {
- private static volatile Instrumentation instrumentation;
+ private static Instrumentation instrumentation;
- private static volatile ClassLoader agentClassLoader;
+ private static ClassLoader agentClassLoader;
public static Instrumentation getInstrumentation() {
return instrumentation;
diff --git a/arex-agent-bootstrap/src/main/java/io/arex/agent/bootstrap/internal/WeakCache.java b/arex-agent-bootstrap/src/main/java/io/arex/agent/bootstrap/internal/WeakCache.java
index 92a3e6f14..3aedb58c8 100644
--- a/arex-agent-bootstrap/src/main/java/io/arex/agent/bootstrap/internal/WeakCache.java
+++ b/arex-agent-bootstrap/src/main/java/io/arex/agent/bootstrap/internal/WeakCache.java
@@ -63,9 +63,9 @@ public int hashCode() {
public boolean equals(Object other) {
if (other instanceof WeakCache.WeakReferenceKey>) {
return ((WeakReferenceKey>) other).get() == get();
- } else {
- return other.equals(this);
}
+
+ return other != null && other.equals(this);
}
}
}
diff --git a/arex-agent-bootstrap/src/test/java/io/arex/agent/bootstrap/internal/WeakCacheTest.java b/arex-agent-bootstrap/src/test/java/io/arex/agent/bootstrap/internal/WeakCacheTest.java
index b94f31087..8fe070dbd 100644
--- a/arex-agent-bootstrap/src/test/java/io/arex/agent/bootstrap/internal/WeakCacheTest.java
+++ b/arex-agent-bootstrap/src/test/java/io/arex/agent/bootstrap/internal/WeakCacheTest.java
@@ -2,6 +2,7 @@
import static org.junit.jupiter.api.Assertions.*;
+import java.lang.ref.ReferenceQueue;
import java.util.concurrent.ForkJoinTask;
import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.AfterEach;
@@ -56,4 +57,11 @@ void testNormalKeyValue() throws InterruptedException {
// check -> remove after gc
assertFalse(Cache.CAPTURED_CACHE.contains(null));
}
+
+ @Test
+ void testWeakReferenceKeyEqualsReturnsFalse() {
+ WeakCache.WeakReferenceKey key = new WeakCache.WeakReferenceKey<>("test", new ReferenceQueue<>());
+ assertFalse(key.equals(null));
+ assertFalse(key.equals("test"));
+ }
}