Skip to content

Commit ef5481c

Browse files
committed
Change operation name and set service name.
1 parent b40bcf9 commit ef5481c

File tree

2 files changed

+48
-39
lines changed

2 files changed

+48
-39
lines changed

dd-java-agent/src/main/java/com/datadoghq/agent/instrumentation/jdbc/PreparedStatementInstrumentation.java

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
99

1010
import com.datadoghq.agent.instrumentation.Instrumenter;
11+
import com.datadoghq.trace.DDTags;
1112
import com.google.auto.service.AutoService;
1213
import io.opentracing.ActiveSpan;
1314
import io.opentracing.NoopActiveSpanSource;
@@ -38,40 +39,43 @@ public static class PreparedStatementAdvice {
3839

3940
@Advice.OnMethodEnter
4041
public static ActiveSpan startSpan(@Advice.This final PreparedStatement statement) {
41-
// TODO: Should this happen always instead of just inside an existing tracer?
42-
if (GlobalTracer.get().activeSpan() == null) {
42+
final String sql = ConnectionInstrumentation.preparedStatements.get(statement);
43+
final Connection connection;
44+
try {
45+
connection = statement.getConnection();
46+
} catch (final Throwable e) {
47+
// Had some problem getting the connection.
4348
return NoopActiveSpanSource.NoopActiveSpan.INSTANCE;
4449
}
4550

46-
final String sql = ConnectionInstrumentation.preparedStatements.get(statement);
51+
final DriverInstrumentation.DBInfo dbInfo =
52+
DriverInstrumentation.connectionInfo.get(connection);
4753

48-
final ActiveSpan span = GlobalTracer.get().buildSpan("sql.prepared_statement").startActive();
49-
Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT);
50-
Tags.COMPONENT.set(span, "java-jdbc");
54+
final ActiveSpan span =
55+
GlobalTracer.get().buildSpan(dbInfo.getType() + ".query").startActive();
56+
Tags.DB_TYPE.set(span, dbInfo.getType());
5157
Tags.DB_STATEMENT.set(span, sql);
52-
span.setTag("span.origin.type", statement.getClass().getName());
58+
Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT);
59+
Tags.COMPONENT.set(span, "java-jdbc-prepared_statement");
5360

61+
span.setTag(DDTags.SERVICE_NAME, dbInfo.getType());
62+
span.setTag("span.origin.type", statement.getClass().getName());
63+
span.setTag("db.jdbc.url", dbInfo.getUrl());
5464
try {
55-
final Connection connection = statement.getConnection();
56-
final DriverInstrumentation.DBInfo dbInfo =
57-
DriverInstrumentation.connectionInfo.get(connection);
58-
59-
span.setTag("db.jdbc.url", dbInfo.getUrl());
6065
span.setTag("db.schema", connection.getSchema());
66+
} catch (final Throwable e) {
67+
// Ignore...
68+
}
6169

62-
Tags.DB_TYPE.set(span, dbInfo.getType());
63-
if (dbInfo.getUser() != null) {
64-
Tags.DB_USER.set(span, dbInfo.getUser());
65-
}
66-
} finally {
67-
return span;
70+
if (dbInfo.getUser() != null) {
71+
Tags.DB_USER.set(span, dbInfo.getUser());
6872
}
73+
return span;
6974
}
7075

7176
@Advice.OnMethodExit(onThrowable = Throwable.class)
7277
public static void stopSpan(
73-
@Advice.Enter final ActiveSpan activeSpan,
74-
@Advice.Thrown(readOnly = false) final Throwable throwable) {
78+
@Advice.Enter final ActiveSpan activeSpan, @Advice.Thrown final Throwable throwable) {
7579
if (throwable != null) {
7680
Tags.ERROR.set(activeSpan, true);
7781
activeSpan.log(Collections.singletonMap("error.object", throwable));

dd-java-agent/src/main/java/com/datadoghq/agent/instrumentation/jdbc/StatementInstrumentation.java

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
99

1010
import com.datadoghq.agent.instrumentation.Instrumenter;
11+
import com.datadoghq.trace.DDTags;
1112
import com.google.auto.service.AutoService;
1213
import io.opentracing.ActiveSpan;
1314
import io.opentracing.NoopActiveSpanSource;
@@ -39,38 +40,42 @@ public static class StatementAdvice {
3940
@Advice.OnMethodEnter
4041
public static ActiveSpan startSpan(
4142
@Advice.Argument(0) final String sql, @Advice.This final Statement statement) {
42-
// TODO: Should this happen always instead of just inside an existing tracer?
43-
if (GlobalTracer.get().activeSpan() == null) {
43+
final Connection connection;
44+
try {
45+
connection = statement.getConnection();
46+
} catch (final Throwable e) {
47+
// Had some problem getting the connection.
4448
return NoopActiveSpanSource.NoopActiveSpan.INSTANCE;
4549
}
4650

47-
final ActiveSpan span = GlobalTracer.get().buildSpan("sql.statement").startActive();
48-
Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT);
49-
Tags.COMPONENT.set(span, "java-jdbc");
51+
final DriverInstrumentation.DBInfo dbInfo =
52+
DriverInstrumentation.connectionInfo.get(connection);
53+
54+
final ActiveSpan span =
55+
GlobalTracer.get().buildSpan(dbInfo.getType() + ".query").startActive();
56+
Tags.DB_TYPE.set(span, dbInfo.getType());
5057
Tags.DB_STATEMENT.set(span, sql);
51-
span.setTag("span.origin.type", statement.getClass().getName());
58+
Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT);
59+
Tags.COMPONENT.set(span, "java-jdbc-statement");
5260

61+
span.setTag(DDTags.SERVICE_NAME, dbInfo.getType());
62+
span.setTag("span.origin.type", statement.getClass().getName());
63+
span.setTag("db.jdbc.url", dbInfo.getUrl());
5364
try {
54-
final Connection connection = statement.getConnection();
55-
final DriverInstrumentation.DBInfo dbInfo =
56-
DriverInstrumentation.connectionInfo.get(connection);
57-
58-
span.setTag("db.jdbc.url", dbInfo.getUrl());
5965
span.setTag("db.schema", connection.getSchema());
66+
} catch (final Throwable e) {
67+
// Ignore...
68+
}
6069

61-
Tags.DB_TYPE.set(span, dbInfo.getType());
62-
if (dbInfo.getUser() != null) {
63-
Tags.DB_USER.set(span, dbInfo.getUser());
64-
}
65-
} finally {
66-
return span;
70+
if (dbInfo.getUser() != null) {
71+
Tags.DB_USER.set(span, dbInfo.getUser());
6772
}
73+
return span;
6874
}
6975

7076
@Advice.OnMethodExit(onThrowable = Throwable.class)
7177
public static void stopSpan(
72-
@Advice.Enter final ActiveSpan activeSpan,
73-
@Advice.Thrown(readOnly = false) final Throwable throwable) {
78+
@Advice.Enter final ActiveSpan activeSpan, @Advice.Thrown final Throwable throwable) {
7479
if (throwable != null) {
7580
Tags.ERROR.set(activeSpan, true);
7681
activeSpan.log(Collections.singletonMap("error.object", throwable));

0 commit comments

Comments
 (0)