From c260093791fa9de94c7f2a0663661eaaef1fdaa6 Mon Sep 17 00:00:00 2001 From: michaelhyatt Date: Fri, 20 Nov 2020 19:15:53 +1100 Subject: [PATCH 1/7] updated to new version 1.19.0 --- apm-mule3-agent/pom.xml | 4 ++-- .../apm/mule/functional/AbstractApmFunctionalTestCase.java | 4 ++-- apm-mule3.8-agent/pom.xml | 4 ++-- .../apm/mule/functional/AbstractApmFunctionalTestCase.java | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/apm-mule3-agent/pom.xml b/apm-mule3-agent/pom.xml index 625b5e9..d18c9d8 100644 --- a/apm-mule3-agent/pom.xml +++ b/apm-mule3-agent/pom.xml @@ -6,7 +6,7 @@ co.elastic.apm apm-mule3-agent - 1.17.0 + 1.19.0 ${packaging} Mule apm-mule3-agent Application @@ -35,7 +35,7 @@ 3.9.0 1.2 - 1.17.0 + 1.19.0 1.10.8 1.8 diff --git a/apm-mule3-agent/src/test/java/co/elastic/apm/mule/functional/AbstractApmFunctionalTestCase.java b/apm-mule3-agent/src/test/java/co/elastic/apm/mule/functional/AbstractApmFunctionalTestCase.java index e788d64..f8b76d2 100644 --- a/apm-mule3-agent/src/test/java/co/elastic/apm/mule/functional/AbstractApmFunctionalTestCase.java +++ b/apm-mule3-agent/src/test/java/co/elastic/apm/mule/functional/AbstractApmFunctionalTestCase.java @@ -67,10 +67,10 @@ public ErrorCapture answer(InvocationOnMock invocation) throws Throwable { } }).when(reporter).report(Mockito.any(ErrorCapture.class)); - Mockito.doNothing().when(reporter).scheduleMetricReporting(Mockito.any(), Mockito.anyLong(), Mockito.any()); +// Mockito.doNothing().when(reporter).scheduleMetricReporting(Mockito.any(), Mockito.anyLong(), Mockito.any()); ElasticApmTracer tracer = new ElasticApmTracerBuilder().reporter(reporter).build(); - tracer.start(); + tracer.start(true); ElasticApmAgent.initInstrumentation(tracer, ByteBuddyAgent.install()); // Skip real initialisation so it is not triggered in the flows for tests diff --git a/apm-mule3.8-agent/pom.xml b/apm-mule3.8-agent/pom.xml index c063334..9b0dc13 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.17.0 + 1.19.0 ${packaging} Mule apm-mule3-agent Application built for Mule 3.8 @@ -34,7 +34,7 @@ 3.8.1 1.2 - 1.17.0 + 1.19.0 1.10.8 1.8 diff --git a/apm-mule3.8-agent/src/test/java/co/elastic/apm/mule/functional/AbstractApmFunctionalTestCase.java b/apm-mule3.8-agent/src/test/java/co/elastic/apm/mule/functional/AbstractApmFunctionalTestCase.java index e788d64..f8b76d2 100644 --- a/apm-mule3.8-agent/src/test/java/co/elastic/apm/mule/functional/AbstractApmFunctionalTestCase.java +++ b/apm-mule3.8-agent/src/test/java/co/elastic/apm/mule/functional/AbstractApmFunctionalTestCase.java @@ -67,10 +67,10 @@ public ErrorCapture answer(InvocationOnMock invocation) throws Throwable { } }).when(reporter).report(Mockito.any(ErrorCapture.class)); - Mockito.doNothing().when(reporter).scheduleMetricReporting(Mockito.any(), Mockito.anyLong(), Mockito.any()); +// Mockito.doNothing().when(reporter).scheduleMetricReporting(Mockito.any(), Mockito.anyLong(), Mockito.any()); ElasticApmTracer tracer = new ElasticApmTracerBuilder().reporter(reporter).build(); - tracer.start(); + tracer.start(true); ElasticApmAgent.initInstrumentation(tracer, ByteBuddyAgent.install()); // Skip real initialisation so it is not triggered in the flows for tests From 9eeab274a8122bec47ee956bde15ff7eaac205e9 Mon Sep 17 00:00:00 2001 From: michaelhyatt Date: Fri, 20 Nov 2020 19:19:47 +1100 Subject: [PATCH 2/7] Fixed deprecation warning --- .../main/java/co/elastic/apm/mule/utils/SpanUtils.java | 2 +- .../java/co/elastic/apm/mule/utils/TransactionUtils.java | 8 ++++---- .../main/java/co/elastic/apm/mule/utils/SpanUtils.java | 2 +- .../java/co/elastic/apm/mule/utils/TransactionUtils.java | 8 ++++---- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/SpanUtils.java b/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/SpanUtils.java index eb5ee02..014ef37 100644 --- a/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/SpanUtils.java +++ b/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/SpanUtils.java @@ -60,7 +60,7 @@ private void createFlowvarSpanTags(MessageProcessorNotification notification, Sp } private void updateSpanTags(Span span, ImmutablePair pair) { - span.addLabel("flowVar:" + pair.getLeft(), pair.getRight().toString()); + span.setLabel("flowVar:" + pair.getLeft(), pair.getRight().toString()); } private String getMessageId(MuleMessage message) { diff --git a/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/TransactionUtils.java b/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/TransactionUtils.java index 0a4df68..2cd750b 100644 --- a/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/TransactionUtils.java +++ b/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/TransactionUtils.java @@ -56,7 +56,7 @@ public void startTransactionIfNone(PipelineMessageNotification notification) { if (PropertyUtils.isInputPropertyCaptureEnabled()) PropertyUtils.getInputProperties(muleMessage).forEach(pair -> updateProperties(pair, transaction, "in")); - transaction.addLabel("messageId", messageId); + transaction.setLabel("messageId", messageId); txMap.storeTransactionOrSpan(messageId, notification, transaction); @@ -122,17 +122,17 @@ private void updateProperties(ImmutablePair pair, Transaction tr if (value instanceof String) { stringValue = (String) value; - transaction.addLabel(prefix + ":" + key, stringValue); + transaction.setLabel(prefix + ":" + key, stringValue); } else if (value instanceof ParameterMap) { ParameterMap map = (ParameterMap) value; map.keySet().stream() - .forEach((key2) -> transaction.addLabel(prefix + ":" + key + ":" + key2, map.get(key2))); + .forEach((key2) -> transaction.setLabel(prefix + ":" + key + ":" + key2, map.get(key2))); } else { stringValue = "???"; - transaction.addLabel(prefix + ":" + key, stringValue); + transaction.setLabel(prefix + ":" + key, stringValue); } } diff --git a/apm-mule3.8-agent/src/main/java/co/elastic/apm/mule/utils/SpanUtils.java b/apm-mule3.8-agent/src/main/java/co/elastic/apm/mule/utils/SpanUtils.java index eb5ee02..014ef37 100644 --- a/apm-mule3.8-agent/src/main/java/co/elastic/apm/mule/utils/SpanUtils.java +++ b/apm-mule3.8-agent/src/main/java/co/elastic/apm/mule/utils/SpanUtils.java @@ -60,7 +60,7 @@ private void createFlowvarSpanTags(MessageProcessorNotification notification, Sp } private void updateSpanTags(Span span, ImmutablePair pair) { - span.addLabel("flowVar:" + pair.getLeft(), pair.getRight().toString()); + span.setLabel("flowVar:" + pair.getLeft(), pair.getRight().toString()); } private String getMessageId(MuleMessage message) { diff --git a/apm-mule3.8-agent/src/main/java/co/elastic/apm/mule/utils/TransactionUtils.java b/apm-mule3.8-agent/src/main/java/co/elastic/apm/mule/utils/TransactionUtils.java index d25e462..26e1cd5 100644 --- a/apm-mule3.8-agent/src/main/java/co/elastic/apm/mule/utils/TransactionUtils.java +++ b/apm-mule3.8-agent/src/main/java/co/elastic/apm/mule/utils/TransactionUtils.java @@ -56,7 +56,7 @@ public void startTransactionIfNone(PipelineMessageNotification notification) { if (PropertyUtils.isInputPropertyCaptureEnabled()) PropertyUtils.getInputProperties(muleMessage).forEach(pair -> updateProperties(pair, transaction, "in")); - transaction.addLabel("messageId", messageId); + transaction.setLabel("messageId", messageId); txMap.storeTransactionOrSpan(messageId, notification, transaction); @@ -123,17 +123,17 @@ private void updateProperties(ImmutablePair pair, Transaction tr if (value instanceof String) { stringValue = (String) value; - transaction.addLabel(prefix + ":" + key, stringValue); + transaction.setLabel(prefix + ":" + key, stringValue); } else if (value instanceof ParameterMap) { ParameterMap map = (ParameterMap) value; map.keySet().stream() - .forEach((key2) -> transaction.addLabel(prefix + ":" + key + ":" + key2, map.get(key2))); + .forEach((key2) -> transaction.setLabel(prefix + ":" + key + ":" + key2, map.get(key2))); } else { stringValue = "???"; - transaction.addLabel(prefix + ":" + key, stringValue); + transaction.setLabel(prefix + ":" + key, stringValue); } } From 63332803404c54630888f6bca9577d821ed6bda4 Mon Sep 17 00:00:00 2001 From: michaelhyatt Date: Sat, 21 Nov 2020 10:03:48 +1100 Subject: [PATCH 3/7] Fixed ClassCastException on devkit processors --- apm-mule3-agent/pom.xml | 18 +++++++++++++++++ .../apm/mule/utils/AnnotatedObjectUtils.java | 20 +++++++++++++++++-- .../mule/functional/FlowFunctionalTests.java | 20 ++++++++++++++++++- .../src/test/resources/objstore-test.xml | 15 ++++++++++++++ 4 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 apm-mule3-agent/src/test/resources/objstore-test.xml diff --git a/apm-mule3-agent/pom.xml b/apm-mule3-agent/pom.xml index d18c9d8..e221d55 100644 --- a/apm-mule3-agent/pom.xml +++ b/apm-mule3-agent/pom.xml @@ -224,6 +224,24 @@ ${mule.version} provided + + org.mule.modules + mule-module-apikit + ${mule.version} + provided + + + org.mule.modules + mule-module-devkit-support + ${mule.version} + provided + + + org.mule.modules + mule-module-objectstore + 2.2.4 + provided + diff --git a/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/AnnotatedObjectUtils.java b/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/AnnotatedObjectUtils.java index b3824e2..cbf281c 100644 --- a/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/AnnotatedObjectUtils.java +++ b/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/AnnotatedObjectUtils.java @@ -18,7 +18,15 @@ public class AnnotatedObjectUtils { private static final String HTTP_WWW_MULESOFT_ORG_SCHEMA_MULE_DOCUMENTATION = "http://www.mulesoft.org/schema/mule/documentation"; public static String getProcessorName(MessageProcessorNotification notification) { - AnnotatedObject annotObj = (AnnotatedObject) notification.getProcessor(); + AnnotatedObject annotObj; + Object obj = notification.getProcessor(); + + try { + annotObj = (AnnotatedObject) obj; + } catch (ClassCastException e) { + return obj.getClass().getSimpleName().toLowerCase(); + } + QName qName = new QName(HTTP_WWW_MULESOFT_ORG_SCHEMA_MULE_DOCUMENTATION, NAME); String step = (String) annotObj.getAnnotation(qName); return step; @@ -30,7 +38,15 @@ public static String getFlowName(ServerNotification notification) { } public static String getProcessorType(MessageProcessorNotification notification) { - AnnotatedObject annotObj = (AnnotatedObject) notification.getProcessor(); + AnnotatedObject annotObj; + Object obj = notification.getProcessor(); + + try { + annotObj = (AnnotatedObject) obj; + } catch (ClassCastException e) { + return obj.getClass().getSimpleName().toLowerCase(); + } + QName qName = new QName(HTTP_WWW_MULESOFT_ORG_SCHEMA_MULE_DOCUMENTATION, SOURCE_ELEMENT); String step = (String) annotObj.getAnnotation(qName); String value = step.split("[ <]")[1]; diff --git a/apm-mule3-agent/src/test/java/co/elastic/apm/mule/functional/FlowFunctionalTests.java b/apm-mule3-agent/src/test/java/co/elastic/apm/mule/functional/FlowFunctionalTests.java index b32eedc..aebcb46 100644 --- a/apm-mule3-agent/src/test/java/co/elastic/apm/mule/functional/FlowFunctionalTests.java +++ b/apm-mule3-agent/src/test/java/co/elastic/apm/mule/functional/FlowFunctionalTests.java @@ -106,9 +106,27 @@ public void testFlowWith4steps() throws Exception { assertEquals("201", tx.getContext().getLabel("out:http.response")); } + @Test + public void testFlowWithObjstore() throws Exception { + + runFlow("objstore-testFlow"); + + Mockito.verify(reporter, Mockito.times(3)).report(Mockito.any(Span.class)); + Mockito.verify(reporter, Mockito.times(1)).report(Mockito.any(Transaction.class)); + Mockito.verify(reporter, Mockito.times(0)).report(Mockito.any(ErrorCapture.class)); + + assertEquals("objstore-testFlow", tx.getNameAsString()); + + assertEquals("storemessageprocessordebuggable", spans.get(0).getNameAsString()); + assertEquals("storemessageprocessordebuggable", spans.get(0).getType().toString()); + assertEquals("containsmessageprocessordebuggable", spans.get(1).getNameAsString()); + assertEquals("containsmessageprocessordebuggable", spans.get(1).getType().toString()); + assertEquals("removemessageprocessordebuggable", spans.get(2).getNameAsString()); + assertEquals("removemessageprocessordebuggable", spans.get(2).getType().toString()); } + @Override protected String getConfigResources() { - return "test_tracer.xml, test1.xml, test2.xml, parallel_flow.xml"; + return "test_tracer.xml, test1.xml, test2.xml, parallel_flow.xml, objstore-test.xml"; } } diff --git a/apm-mule3-agent/src/test/resources/objstore-test.xml b/apm-mule3-agent/src/test/resources/objstore-test.xml new file mode 100644 index 0000000..df54127 --- /dev/null +++ b/apm-mule3-agent/src/test/resources/objstore-test.xml @@ -0,0 +1,15 @@ + + + + + + + + + + From 9a58910bfdf960699111a9c70caf25796d340bd4 Mon Sep 17 00:00:00 2001 From: michaelhyatt Date: Sat, 21 Nov 2020 15:25:19 +1100 Subject: [PATCH 4/7] Fix for devkit processors not implementing AnnotatedObject --- .../apm/mule/utils/AnnotatedObjectUtils.java | 5 +++-- .../mule/functional/FlowFunctionalTests.java | 11 +++++----- apm-mule3.8-agent/pom.xml | 13 +++++++++++- .../apm/mule/utils/AnnotatedObjectUtils.java | 21 +++++++++++++++++-- .../mule/functional/FlowFunctionalTests.java | 21 ++++++++++++++++++- .../src/test/resources/objstore-test.xml | 15 +++++++++++++ 6 files changed, 75 insertions(+), 11 deletions(-) create mode 100644 apm-mule3.8-agent/src/test/resources/objstore-test.xml diff --git a/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/AnnotatedObjectUtils.java b/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/AnnotatedObjectUtils.java index cbf281c..a526423 100644 --- a/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/AnnotatedObjectUtils.java +++ b/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/AnnotatedObjectUtils.java @@ -5,6 +5,7 @@ import org.mule.api.AnnotatedObject; import org.mule.api.MuleEvent; import org.mule.api.context.notification.ServerNotification; +import org.mule.api.processor.MessageProcessor; import org.mule.context.notification.MessageProcessorNotification; /** @@ -19,12 +20,12 @@ public class AnnotatedObjectUtils { public static String getProcessorName(MessageProcessorNotification notification) { AnnotatedObject annotObj; - Object obj = notification.getProcessor(); + MessageProcessor obj = notification.getProcessor(); try { annotObj = (AnnotatedObject) obj; } catch (ClassCastException e) { - return obj.getClass().getSimpleName().toLowerCase(); + return obj.getClass().getSimpleName(); } QName qName = new QName(HTTP_WWW_MULESOFT_ORG_SCHEMA_MULE_DOCUMENTATION, NAME); diff --git a/apm-mule3-agent/src/test/java/co/elastic/apm/mule/functional/FlowFunctionalTests.java b/apm-mule3-agent/src/test/java/co/elastic/apm/mule/functional/FlowFunctionalTests.java index aebcb46..298485d 100644 --- a/apm-mule3-agent/src/test/java/co/elastic/apm/mule/functional/FlowFunctionalTests.java +++ b/apm-mule3-agent/src/test/java/co/elastic/apm/mule/functional/FlowFunctionalTests.java @@ -117,13 +117,14 @@ public void testFlowWithObjstore() throws Exception { assertEquals("objstore-testFlow", tx.getNameAsString()); - assertEquals("storemessageprocessordebuggable", spans.get(0).getNameAsString()); + assertEquals("StoreMessageProcessorDebuggable", spans.get(0).getNameAsString()); assertEquals("storemessageprocessordebuggable", spans.get(0).getType().toString()); - assertEquals("containsmessageprocessordebuggable", spans.get(1).getNameAsString()); + assertEquals("ContainsMessageProcessorDebuggable", spans.get(1).getNameAsString()); assertEquals("containsmessageprocessordebuggable", spans.get(1).getType().toString()); - assertEquals("removemessageprocessordebuggable", spans.get(2).getNameAsString()); - assertEquals("removemessageprocessordebuggable", spans.get(2).getType().toString()); } - + assertEquals("RemoveMessageProcessorDebuggable", spans.get(2).getNameAsString()); + assertEquals("removemessageprocessordebuggable", spans.get(2).getType().toString()); + } + @Override protected String getConfigResources() { return "test_tracer.xml, test1.xml, test2.xml, parallel_flow.xml, objstore-test.xml"; diff --git a/apm-mule3.8-agent/pom.xml b/apm-mule3.8-agent/pom.xml index 9b0dc13..0bc68d7 100644 --- a/apm-mule3.8-agent/pom.xml +++ b/apm-mule3.8-agent/pom.xml @@ -217,7 +217,18 @@ ${mule.version} provided - + + org.mule.modules + mule-module-devkit-support + ${mule.version} + provided + + + org.mule.modules + mule-module-objectstore + 2.2.4 + provided + diff --git a/apm-mule3.8-agent/src/main/java/co/elastic/apm/mule/utils/AnnotatedObjectUtils.java b/apm-mule3.8-agent/src/main/java/co/elastic/apm/mule/utils/AnnotatedObjectUtils.java index b3824e2..a526423 100644 --- a/apm-mule3.8-agent/src/main/java/co/elastic/apm/mule/utils/AnnotatedObjectUtils.java +++ b/apm-mule3.8-agent/src/main/java/co/elastic/apm/mule/utils/AnnotatedObjectUtils.java @@ -5,6 +5,7 @@ import org.mule.api.AnnotatedObject; import org.mule.api.MuleEvent; import org.mule.api.context.notification.ServerNotification; +import org.mule.api.processor.MessageProcessor; import org.mule.context.notification.MessageProcessorNotification; /** @@ -18,7 +19,15 @@ public class AnnotatedObjectUtils { private static final String HTTP_WWW_MULESOFT_ORG_SCHEMA_MULE_DOCUMENTATION = "http://www.mulesoft.org/schema/mule/documentation"; public static String getProcessorName(MessageProcessorNotification notification) { - AnnotatedObject annotObj = (AnnotatedObject) notification.getProcessor(); + AnnotatedObject annotObj; + MessageProcessor obj = notification.getProcessor(); + + try { + annotObj = (AnnotatedObject) obj; + } catch (ClassCastException e) { + return obj.getClass().getSimpleName(); + } + QName qName = new QName(HTTP_WWW_MULESOFT_ORG_SCHEMA_MULE_DOCUMENTATION, NAME); String step = (String) annotObj.getAnnotation(qName); return step; @@ -30,7 +39,15 @@ public static String getFlowName(ServerNotification notification) { } public static String getProcessorType(MessageProcessorNotification notification) { - AnnotatedObject annotObj = (AnnotatedObject) notification.getProcessor(); + AnnotatedObject annotObj; + Object obj = notification.getProcessor(); + + try { + annotObj = (AnnotatedObject) obj; + } catch (ClassCastException e) { + return obj.getClass().getSimpleName().toLowerCase(); + } + QName qName = new QName(HTTP_WWW_MULESOFT_ORG_SCHEMA_MULE_DOCUMENTATION, SOURCE_ELEMENT); String step = (String) annotObj.getAnnotation(qName); String value = step.split("[ <]")[1]; diff --git a/apm-mule3.8-agent/src/test/java/co/elastic/apm/mule/functional/FlowFunctionalTests.java b/apm-mule3.8-agent/src/test/java/co/elastic/apm/mule/functional/FlowFunctionalTests.java index b32eedc..298485d 100644 --- a/apm-mule3.8-agent/src/test/java/co/elastic/apm/mule/functional/FlowFunctionalTests.java +++ b/apm-mule3.8-agent/src/test/java/co/elastic/apm/mule/functional/FlowFunctionalTests.java @@ -106,9 +106,28 @@ public void testFlowWith4steps() throws Exception { assertEquals("201", tx.getContext().getLabel("out:http.response")); } + @Test + public void testFlowWithObjstore() throws Exception { + + runFlow("objstore-testFlow"); + + Mockito.verify(reporter, Mockito.times(3)).report(Mockito.any(Span.class)); + Mockito.verify(reporter, Mockito.times(1)).report(Mockito.any(Transaction.class)); + Mockito.verify(reporter, Mockito.times(0)).report(Mockito.any(ErrorCapture.class)); + + assertEquals("objstore-testFlow", tx.getNameAsString()); + + assertEquals("StoreMessageProcessorDebuggable", spans.get(0).getNameAsString()); + assertEquals("storemessageprocessordebuggable", spans.get(0).getType().toString()); + assertEquals("ContainsMessageProcessorDebuggable", spans.get(1).getNameAsString()); + assertEquals("containsmessageprocessordebuggable", spans.get(1).getType().toString()); + assertEquals("RemoveMessageProcessorDebuggable", spans.get(2).getNameAsString()); + assertEquals("removemessageprocessordebuggable", spans.get(2).getType().toString()); + } + @Override protected String getConfigResources() { - return "test_tracer.xml, test1.xml, test2.xml, parallel_flow.xml"; + return "test_tracer.xml, test1.xml, test2.xml, parallel_flow.xml, objstore-test.xml"; } } diff --git a/apm-mule3.8-agent/src/test/resources/objstore-test.xml b/apm-mule3.8-agent/src/test/resources/objstore-test.xml new file mode 100644 index 0000000..df54127 --- /dev/null +++ b/apm-mule3.8-agent/src/test/resources/objstore-test.xml @@ -0,0 +1,15 @@ + + + + + + + + + + From ae64d455d6e53323d0f2c27a4b4c35452fe6cd2e Mon Sep 17 00:00:00 2001 From: michaelhyatt Date: Sat, 21 Nov 2020 15:35:33 +1100 Subject: [PATCH 5/7] Doing more defensive property setting. --- .../co/elastic/apm/mule/utils/SpanUtils.java | 16 ++++++++++++++-- .../co/elastic/apm/mule/utils/SpanUtils.java | 16 ++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/SpanUtils.java b/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/SpanUtils.java index 014ef37..4792955 100644 --- a/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/SpanUtils.java +++ b/apm-mule3-agent/src/main/java/co/elastic/apm/mule/utils/SpanUtils.java @@ -2,10 +2,12 @@ import org.apache.commons.lang3.tuple.ImmutablePair; import org.mule.api.MuleMessage; +import org.mule.api.transformer.DataType; import org.mule.api.transport.PropertyScope; import org.mule.context.notification.MessageProcessorNotification; import org.springframework.beans.factory.annotation.Autowired; +import co.elastic.apm.api.HeaderInjector; import co.elastic.apm.api.Span; /** @@ -36,8 +38,18 @@ public void startSpan(MessageProcessorNotification notification) { // Update MuleMessage with distributed tracing properties set into // outboundProperty - span.injectTraceHeaders( - (headerName, headerValue) -> message.setProperty(headerName, headerValue, PropertyScope.OUTBOUND)); + span.injectTraceHeaders(new HeaderInjector() { + + @Override + public void addHeader(String headerName, String headerValue) { + try { + message.setProperty(headerName, headerValue, PropertyScope.OUTBOUND, DataType.STRING_DATA_TYPE); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + }); createFlowvarSpanTags(notification, span, processorName); diff --git a/apm-mule3.8-agent/src/main/java/co/elastic/apm/mule/utils/SpanUtils.java b/apm-mule3.8-agent/src/main/java/co/elastic/apm/mule/utils/SpanUtils.java index 014ef37..4792955 100644 --- a/apm-mule3.8-agent/src/main/java/co/elastic/apm/mule/utils/SpanUtils.java +++ b/apm-mule3.8-agent/src/main/java/co/elastic/apm/mule/utils/SpanUtils.java @@ -2,10 +2,12 @@ import org.apache.commons.lang3.tuple.ImmutablePair; import org.mule.api.MuleMessage; +import org.mule.api.transformer.DataType; import org.mule.api.transport.PropertyScope; import org.mule.context.notification.MessageProcessorNotification; import org.springframework.beans.factory.annotation.Autowired; +import co.elastic.apm.api.HeaderInjector; import co.elastic.apm.api.Span; /** @@ -36,8 +38,18 @@ public void startSpan(MessageProcessorNotification notification) { // Update MuleMessage with distributed tracing properties set into // outboundProperty - span.injectTraceHeaders( - (headerName, headerValue) -> message.setProperty(headerName, headerValue, PropertyScope.OUTBOUND)); + span.injectTraceHeaders(new HeaderInjector() { + + @Override + public void addHeader(String headerName, String headerValue) { + try { + message.setProperty(headerName, headerValue, PropertyScope.OUTBOUND, DataType.STRING_DATA_TYPE); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + }); createFlowvarSpanTags(notification, span, processorName); From 394a68817359eef57f3a354404c25b65b5fe75e5 Mon Sep 17 00:00:00 2001 From: michaelhyatt Date: Sat, 21 Nov 2020 15:39:23 +1100 Subject: [PATCH 6/7] Updated examples to 1.19.0 --- example-app/component1/pom.xml | 2 +- example-app/component2/pom.xml | 2 +- example-domain-app/test-domain/pom.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/example-app/component1/pom.xml b/example-app/component1/pom.xml index ac79039..d22ed9d 100644 --- a/example-app/component1/pom.xml +++ b/example-app/component1/pom.xml @@ -16,7 +16,7 @@ 3.9.0 1.7 - 1.16.0 + 1.19.0 true diff --git a/example-app/component2/pom.xml b/example-app/component2/pom.xml index 682ada2..eb5126c 100644 --- a/example-app/component2/pom.xml +++ b/example-app/component2/pom.xml @@ -16,7 +16,7 @@ 3.9.0 1.7 - 1.16.0 + 1.19.0 true diff --git a/example-domain-app/test-domain/pom.xml b/example-domain-app/test-domain/pom.xml index d7aa63c..3b61668 100644 --- a/example-domain-app/test-domain/pom.xml +++ b/example-domain-app/test-domain/pom.xml @@ -28,7 +28,7 @@ co.elastic.apm apm-mule3-agent - 1.16.0 + 1.19.0 From dafab6e22eca8377c3ac5535363b235e91b38336 Mon Sep 17 00:00:00 2001 From: michaelhyatt Date: Sat, 21 Nov 2020 16:29:41 +1100 Subject: [PATCH 7/7] Testing with older version of ObjectStore that is publicly available and won't break CircleCI --- apm-mule3-agent/pom.xml | 2 +- .../apm/mule/functional/FlowFunctionalTests.java | 12 ++++++------ apm-mule3.8-agent/pom.xml | 6 +++--- .../apm/mule/functional/FlowFunctionalTests.java | 12 ++++++------ 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/apm-mule3-agent/pom.xml b/apm-mule3-agent/pom.xml index e221d55..514fa40 100644 --- a/apm-mule3-agent/pom.xml +++ b/apm-mule3-agent/pom.xml @@ -239,7 +239,7 @@ org.mule.modules mule-module-objectstore - 2.2.4 + 1.3.3 provided diff --git a/apm-mule3-agent/src/test/java/co/elastic/apm/mule/functional/FlowFunctionalTests.java b/apm-mule3-agent/src/test/java/co/elastic/apm/mule/functional/FlowFunctionalTests.java index 298485d..fb8b82a 100644 --- a/apm-mule3-agent/src/test/java/co/elastic/apm/mule/functional/FlowFunctionalTests.java +++ b/apm-mule3-agent/src/test/java/co/elastic/apm/mule/functional/FlowFunctionalTests.java @@ -117,12 +117,12 @@ public void testFlowWithObjstore() throws Exception { assertEquals("objstore-testFlow", tx.getNameAsString()); - assertEquals("StoreMessageProcessorDebuggable", spans.get(0).getNameAsString()); - assertEquals("storemessageprocessordebuggable", spans.get(0).getType().toString()); - assertEquals("ContainsMessageProcessorDebuggable", spans.get(1).getNameAsString()); - assertEquals("containsmessageprocessordebuggable", spans.get(1).getType().toString()); - assertEquals("RemoveMessageProcessorDebuggable", spans.get(2).getNameAsString()); - assertEquals("removemessageprocessordebuggable", spans.get(2).getType().toString()); + assertEquals("StoreMessageProcessor", spans.get(0).getNameAsString()); + assertEquals("storemessageprocessor", spans.get(0).getType().toString()); + assertEquals("ContainsMessageProcessor", spans.get(1).getNameAsString()); + assertEquals("containsmessageprocessor", spans.get(1).getType().toString()); + assertEquals("RemoveMessageProcessor", spans.get(2).getNameAsString()); + assertEquals("removemessageprocessor", spans.get(2).getType().toString()); } @Override diff --git a/apm-mule3.8-agent/pom.xml b/apm-mule3.8-agent/pom.xml index 0bc68d7..36edd03 100644 --- a/apm-mule3.8-agent/pom.xml +++ b/apm-mule3.8-agent/pom.xml @@ -226,7 +226,7 @@ org.mule.modules mule-module-objectstore - 2.2.4 + 1.3.3 provided @@ -250,7 +250,7 @@ mulesoft-releases MuleSoft Releases Repository - http://repository.mulesoft.org/releases/ + https://repository.mulesoft.org/releases/ default @@ -259,7 +259,7 @@ mulesoft-release mulesoft release repository default - http://repository.mulesoft.org/releases/ + https://repository.mulesoft.org/releases/ false diff --git a/apm-mule3.8-agent/src/test/java/co/elastic/apm/mule/functional/FlowFunctionalTests.java b/apm-mule3.8-agent/src/test/java/co/elastic/apm/mule/functional/FlowFunctionalTests.java index 298485d..fb8b82a 100644 --- a/apm-mule3.8-agent/src/test/java/co/elastic/apm/mule/functional/FlowFunctionalTests.java +++ b/apm-mule3.8-agent/src/test/java/co/elastic/apm/mule/functional/FlowFunctionalTests.java @@ -117,12 +117,12 @@ public void testFlowWithObjstore() throws Exception { assertEquals("objstore-testFlow", tx.getNameAsString()); - assertEquals("StoreMessageProcessorDebuggable", spans.get(0).getNameAsString()); - assertEquals("storemessageprocessordebuggable", spans.get(0).getType().toString()); - assertEquals("ContainsMessageProcessorDebuggable", spans.get(1).getNameAsString()); - assertEquals("containsmessageprocessordebuggable", spans.get(1).getType().toString()); - assertEquals("RemoveMessageProcessorDebuggable", spans.get(2).getNameAsString()); - assertEquals("removemessageprocessordebuggable", spans.get(2).getType().toString()); + assertEquals("StoreMessageProcessor", spans.get(0).getNameAsString()); + assertEquals("storemessageprocessor", spans.get(0).getType().toString()); + assertEquals("ContainsMessageProcessor", spans.get(1).getNameAsString()); + assertEquals("containsmessageprocessor", spans.get(1).getType().toString()); + assertEquals("RemoveMessageProcessor", spans.get(2).getNameAsString()); + assertEquals("removemessageprocessor", spans.get(2).getType().toString()); } @Override