diff --git a/apm-mule3-agent/pom.xml b/apm-mule3-agent/pom.xml
index 81bc723..1897a4b 100644
--- a/apm-mule3-agent/pom.xml
+++ b/apm-mule3-agent/pom.xml
@@ -5,7 +5,7 @@
co.elastic.apm
apm-mule3-agent
- 1.19.1
+ 1.21.1
${packaging}
Mule apm-mule3-agent Application
@@ -34,7 +34,7 @@
3.9.0
1.2
- 1.19.0
+ 1.21.0
1.10.8
1.8
diff --git a/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/SpanStore.java b/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/SpanStore.java
index 3b23c32..b9590a3 100644
--- a/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/SpanStore.java
+++ b/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/SpanStore.java
@@ -9,6 +9,7 @@
import org.mule.api.context.notification.ServerNotification;
import org.mule.api.processor.MessageProcessor;
import org.mule.context.notification.MessageProcessorNotification;
+import org.python.modules.synchronize;
import co.elastic.apm.api.Span;
@@ -22,7 +23,7 @@
*/
public class SpanStore {
- private Map, Span>> map = Collections.synchronizedMap(new WeakHashMap<>());
+ private static Map, Span>> map = Collections.synchronizedMap(new WeakHashMap, Span>>());
/**
* Store a {@link co.elastic.apm.api.Span} or a
@@ -38,13 +39,15 @@ public void storeTransactionOrSpan(String key, ServerNotification notification,
Optional key2 = getKey2(notification);
- Map, Span> innerMap = map.get(key);
+ synchronized(map) {
+ Map, Span> innerMap = map.get(key);
- if (innerMap == null)
- innerMap = new HashMap<>();
+ if (innerMap == null)
+ innerMap = new HashMap<>();
- innerMap.put(key2, span);
- map.put(key, innerMap);
+ innerMap.put(key2, span);
+ map.put(key, innerMap);
+ }
}
/**
@@ -59,11 +62,17 @@ public Span getTransactionOrSpan(String key, ServerNotification notification) {
Optional key2 = getKey2(notification);
- Map, Span> stack = map.get(key);
- Span span = stack.remove(key2);
+ Span span = null;
+
+ synchronized(map) {
+ Map, Span> stack = map.get(key);
+ span = stack.remove(key2);
- if (stack.size() == 0)
- map.remove(key);
+ if (stack.size() == 0)
+ map.remove(key);
+ else
+ map.put(key, stack);
+ }
return span;
}
diff --git a/apm-mule3.8-agent/pom.xml b/apm-mule3.8-agent/pom.xml
index a9d0be7..6fa4828 100644
--- a/apm-mule3.8-agent/pom.xml
+++ b/apm-mule3.8-agent/pom.xml
@@ -5,7 +5,7 @@
4.0.0
co.elastic.apm
apm-mule3.8-agent
- 1.19.1
+ 1.21.1
${packaging}
Mule apm-mule3-agent Application built for Mule 3.8
@@ -34,7 +34,7 @@
3.8.1
1.2
- 1.19.0
+ 1.21.0
1.10.8
1.8
diff --git a/apm-mule3.8-agent/src/main/java/co/elastic/apm/mule/utils/SpanStore.java b/apm-mule3.8-agent/src/main/java/co/elastic/apm/mule/utils/SpanStore.java
index ec3ae3d..b9590a3 100644
--- a/apm-mule3.8-agent/src/main/java/co/elastic/apm/mule/utils/SpanStore.java
+++ b/apm-mule3.8-agent/src/main/java/co/elastic/apm/mule/utils/SpanStore.java
@@ -9,6 +9,7 @@
import org.mule.api.context.notification.ServerNotification;
import org.mule.api.processor.MessageProcessor;
import org.mule.context.notification.MessageProcessorNotification;
+import org.python.modules.synchronize;
import co.elastic.apm.api.Span;
@@ -22,7 +23,7 @@
*/
public class SpanStore {
- private Map, Span>> map = Collections.synchronizedMap(new WeakHashMap<>());
+ private static Map, Span>> map = Collections.synchronizedMap(new WeakHashMap, Span>>());
/**
* Store a {@link co.elastic.apm.api.Span} or a
@@ -30,21 +31,23 @@ public class SpanStore {
* {@link String} key
*
* @param key
- * rootMessageId from MuleMessage
+ * rootMessageId from MuleMessage
* @param span
- * Span or Transaction object to store
+ * Span or Transaction object to store
*/
public void storeTransactionOrSpan(String key, ServerNotification notification, Span span) {
Optional key2 = getKey2(notification);
- Map, Span> innerMap = map.get(key);
+ synchronized(map) {
+ Map, Span> innerMap = map.get(key);
- if (innerMap == null)
- innerMap = new HashMap<>();
+ if (innerMap == null)
+ innerMap = new HashMap<>();
- innerMap.put(key2, span);
- map.put(key, innerMap);
+ innerMap.put(key2, span);
+ map.put(key, innerMap);
+ }
}
/**
@@ -59,12 +62,18 @@ public Span getTransactionOrSpan(String key, ServerNotification notification) {
Optional key2 = getKey2(notification);
- Map, Span> stack = map.get(key);
- Span span = stack.remove(key2);
-
- if (stack.size() == 0)
- map.remove(key);
-
+ Span span = null;
+
+ synchronized(map) {
+ Map, Span> stack = map.get(key);
+ span = stack.remove(key2);
+
+ if (stack.size() == 0)
+ map.remove(key);
+ else
+ map.put(key, stack);
+ }
+
return span;
}
@@ -74,7 +83,7 @@ public Span getTransactionOrSpan(String key, ServerNotification notification) {
* can throw NullPointerException, if called on an empty map.
*
* @param notification
- * typically, rootMessageId from MuleMessage
+ * typically, rootMessageId from MuleMessage
* @return
*/
public int depth(String key) {
@@ -99,7 +108,7 @@ public Span getTopLevelTransaction(String key) {
private Optional getKey2(ServerNotification notification) {
Optional key2 = Optional.empty();
-
+
if (notification instanceof MessageProcessorNotification) {
MessageProcessor processor = ((MessageProcessorNotification) notification).getProcessor();
key2 = Optional.of(processor);
diff --git a/example-app/component1/.classpath b/example-app/component1/.classpath
index b1ed2f6..dc551f4 100644
--- a/example-app/component1/.classpath
+++ b/example-app/component1/.classpath
@@ -6,12 +6,7 @@
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/example-app/component1/mule-project.xml b/example-app/component1/mule-project.xml
index 91f9d7a..6899bc8 100644
--- a/example-app/component1/mule-project.xml
+++ b/example-app/component1/mule-project.xml
@@ -1,5 +1,5 @@
-
+
component1
diff --git a/example-app/component1/pom.xml b/example-app/component1/pom.xml
index 8a7becf..a4fdf54 100644
--- a/example-app/component1/pom.xml
+++ b/example-app/component1/pom.xml
@@ -1,6 +1,5 @@
-
+
4.0.0
com.mycompany
@@ -16,7 +15,7 @@
3.9.0
1.7
- 1.19.1
+ 1.21.1
true
diff --git a/example-app/component1/src/main/app/mule-app.properties b/example-app/component1/src/main/app/mule-app.properties
index 5153f7b..ade8425 100644
--- a/example-app/component1/src/main/app/mule-app.properties
+++ b/example-app/component1/src/main/app/mule-app.properties
@@ -19,6 +19,7 @@ elastic.apm.service_name=component1
elastic.apm.service_version=v1.0.0
elastic.apm.stack_trace_limit=3
elastic.apm.span_frames_min_duration=0ms
+elastic.apm.cloud_provider=NONE
# Mule apm specific properties
elastic.apm.mule.capture_input_properties=true
diff --git a/example-app/component2/.classpath b/example-app/component2/.classpath
index b1ed2f6..dc551f4 100644
--- a/example-app/component2/.classpath
+++ b/example-app/component2/.classpath
@@ -6,12 +6,7 @@
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/example-app/component2/mule-project.xml b/example-app/component2/mule-project.xml
index d2870b9..764fc7d 100644
--- a/example-app/component2/mule-project.xml
+++ b/example-app/component2/mule-project.xml
@@ -1,5 +1,5 @@
-
+
component2
diff --git a/example-app/component2/pom.xml b/example-app/component2/pom.xml
index cb7a1df..37b296e 100644
--- a/example-app/component2/pom.xml
+++ b/example-app/component2/pom.xml
@@ -1,6 +1,5 @@
-
-
+
+
4.0.0
com.mycompany
@@ -16,7 +15,7 @@
3.9.0
1.7
- 1.19.1
+ 1.21.1
true
diff --git a/example-app/component2/src/main/app/mule-app.properties b/example-app/component2/src/main/app/mule-app.properties
index 8e4d9de..6f224b3 100644
--- a/example-app/component2/src/main/app/mule-app.properties
+++ b/example-app/component2/src/main/app/mule-app.properties
@@ -10,6 +10,8 @@ elastic.apm.service_name=component2
elastic.apm.service_version=v1.0.0
elastic.apm.stack_trace_limit=3
elastic.apm.span_frames_min_duration=0ms
+elastic.apm.cloud_provider=NONE
+
# Mule apm specific properties
elastic.apm.mule.capture_input_properties=true