Skip to content

Commit

Permalink
NH-93561: add sw span
Browse files Browse the repository at this point in the history
  • Loading branch information
cleverchuk committed Oct 16, 2024
1 parent 5c6c9a0 commit bc7fd54
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 3 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,4 @@ systemProp.org.gradle.internal.repository.initial.backoff=500
# Project properties provides a central place for shared property among subprojects
otel.agent.version=2.8.0
otel.sdk.version=1.42.1
swo.agent.version=2.8.0
swo.agent.version=2.8.1-jdbc
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,15 @@

import com.solarwinds.joboe.config.ConfigManager;
import com.solarwinds.joboe.config.ConfigProperty;
import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.SpanBuilder;
import io.opentelemetry.api.trace.SpanKind;
import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.context.Scope;
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
import io.opentelemetry.semconv.SemanticAttributes;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.matcher.ElementMatcher;
Expand Down Expand Up @@ -85,8 +92,24 @@ public static class PrepareAdvice {

@Advice.OnMethodEnter(suppress = Throwable.class)
public static void injectComment(@Advice.Argument(value = 0, readOnly = false) String sql) {
sql = TraceContextInjector.inject(currentContext(), sql);
StatementTracer.writeStackTraceSpec(currentContext());
if (sql.contains("traceparent")) {
return;
}

Tracer tracer = GlobalOpenTelemetry.getTracer("com.solarwinds.jdbc", "1.0");
SpanBuilder spanBuilder =
tracer
.spanBuilder("sw.jdbc.context")
.setAttribute(SemanticAttributes.DB_STATEMENT, sql)
.setSpanKind(SpanKind.INTERNAL);

Span span = spanBuilder.startSpan();
try (Scope scope = span.makeCurrent()) {
sql = TraceContextInjector.inject(currentContext(), sql);
StatementTracer.writeStackTraceSpec(currentContext());
} finally {
span.end();
}
}
}
}

0 comments on commit bc7fd54

Please sign in to comment.