From b7e18f452fe0e45f1861c244fbc7b4ed00100c2a Mon Sep 17 00:00:00 2001 From: Ben Donnelly Date: Mon, 5 Feb 2024 21:55:28 +0000 Subject: [PATCH 1/2] fix(span): fix otel support for spans - ensure callbacks are closed when not collecting data --- .../agent/tracepoint/handler/Callback.java | 5 ++++- .../deep/agent/types/TracePointConfig.java | 2 +- .../com/intergral/deep/plugin/OtelPlugin.java | 18 +++++++----------- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/agent/src/main/java/com/intergral/deep/agent/tracepoint/handler/Callback.java b/agent/src/main/java/com/intergral/deep/agent/tracepoint/handler/Callback.java index b0587d1..42b9fcb 100644 --- a/agent/src/main/java/com/intergral/deep/agent/tracepoint/handler/Callback.java +++ b/agent/src/main/java/com/intergral/deep/agent/tracepoint/handler/Callback.java @@ -136,7 +136,7 @@ public static void callBack(final List bpIds, .map(TracePointConfig::getId).collect(Collectors.joining(",")); final Closeable span; if (!spans.isEmpty()) { - span = span(filename + lineNo, spans); + span = span(filename + "#" + lineNo, spans); } else { span = null; } @@ -158,6 +158,9 @@ private static ICallbackResult commonCallback(final List tracepointIds, final IFactory factory, final CallbackHook callbackHook) { if (tracepointIds.isEmpty()) { + if (callbackHook != null) { + callbackHook.close(Callback.PUSH_SERVICE); + } return null; } final long[] lineStart = Utils.currentTimeNanos(); diff --git a/agent/src/main/java/com/intergral/deep/agent/types/TracePointConfig.java b/agent/src/main/java/com/intergral/deep/agent/types/TracePointConfig.java index 7e40946..6461f06 100644 --- a/agent/src/main/java/com/intergral/deep/agent/types/TracePointConfig.java +++ b/agent/src/main/java/com/intergral/deep/agent/types/TracePointConfig.java @@ -112,7 +112,7 @@ public class TracePointConfig { public static final String COLLECT = "collect"; /** - * This type tells Deep to not collect any data and not to send the sanpshot. + * This type tells Deep to not collect any data and not to send the snapshot. */ public static final String NO_COLLECT = "no_collect"; diff --git a/plugins/otel-plugin/src/main/java/com/intergral/deep/plugin/OtelPlugin.java b/plugins/otel-plugin/src/main/java/com/intergral/deep/plugin/OtelPlugin.java index 5eb0aac..3e85ff1 100644 --- a/plugins/otel-plugin/src/main/java/com/intergral/deep/plugin/OtelPlugin.java +++ b/plugins/otel-plugin/src/main/java/com/intergral/deep/plugin/OtelPlugin.java @@ -95,6 +95,10 @@ public ISpan createSpan(final String name) { } final Span span = deep.spanBuilder(name).setAttribute("deep", DeepVersion.VERSION).startSpan(); + if(span == null) { + return null; + } + return new ISpan() { @Override public String name() { @@ -104,25 +108,17 @@ public String name() { @Override public String traceId() { - if (span != null) { - return span.getSpanContext().getTraceId(); - } - return null; + return span.getSpanContext().getTraceId(); } @Override public String spanId() { - if (span != null) { - return span.getSpanContext().getSpanId(); - } - return null; + return span.getSpanContext().getSpanId(); } @Override public void addAttribute(final String key, final String value) { - if (span != null) { - span.setAttribute(key, value); - } + span.setAttribute(key, value); } @Override From 08f9f83861bf8a5028e8ae74f950653560a17332 Mon Sep 17 00:00:00 2001 From: Ben Donnelly Date: Mon, 5 Feb 2024 22:00:52 +0000 Subject: [PATCH 2/2] fix(lint): fix lint issue --- .../src/main/java/com/intergral/deep/plugin/OtelPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/otel-plugin/src/main/java/com/intergral/deep/plugin/OtelPlugin.java b/plugins/otel-plugin/src/main/java/com/intergral/deep/plugin/OtelPlugin.java index 3e85ff1..d60d304 100644 --- a/plugins/otel-plugin/src/main/java/com/intergral/deep/plugin/OtelPlugin.java +++ b/plugins/otel-plugin/src/main/java/com/intergral/deep/plugin/OtelPlugin.java @@ -95,7 +95,7 @@ public ISpan createSpan(final String name) { } final Span span = deep.spanBuilder(name).setAttribute("deep", DeepVersion.VERSION).startSpan(); - if(span == null) { + if (span == null) { return null; }