From e93adf9f8f9957a5e6de27112f1284d5fd80c8ff Mon Sep 17 00:00:00 2001 From: Guillaume Polaert Date: Tue, 1 Aug 2017 11:37:11 +0200 Subject: [PATCH] [core] compatibility for sql.query tags --- .../src/main/java/com/datadoghq/trace/DDTags.java | 1 + .../integration/DBStatementAsResourceName.java | 14 ++++++++++++++ .../trace/integration/DBTypeDecorator.java | 2 +- .../src/main/resources/dd-trace-decorators.yaml | 1 + 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/dd-trace/src/main/java/com/datadoghq/trace/DDTags.java b/dd-trace/src/main/java/com/datadoghq/trace/DDTags.java index a3a16ffe17..e543fec713 100644 --- a/dd-trace/src/main/java/com/datadoghq/trace/DDTags.java +++ b/dd-trace/src/main/java/com/datadoghq/trace/DDTags.java @@ -6,4 +6,5 @@ public class DDTags { public static final String RESOURCE_NAME = "resource-name"; public static final String THREAD_NAME = "thread-name"; public static final String THREAD_ID = "thread-id"; + public static final String DB_STATEMENT = "sql.query"; } diff --git a/dd-trace/src/main/java/com/datadoghq/trace/integration/DBStatementAsResourceName.java b/dd-trace/src/main/java/com/datadoghq/trace/integration/DBStatementAsResourceName.java index 84b10db48b..6ef8f0cb77 100644 --- a/dd-trace/src/main/java/com/datadoghq/trace/integration/DBStatementAsResourceName.java +++ b/dd-trace/src/main/java/com/datadoghq/trace/integration/DBStatementAsResourceName.java @@ -1,5 +1,6 @@ package com.datadoghq.trace.integration; +import com.datadoghq.trace.DDSpanContext; import com.datadoghq.trace.DDTags; import io.opentracing.tag.Tags; @@ -10,4 +11,17 @@ public class DBStatementAsResourceName extends AbstractDecorator { this.setMatchingTag(Tags.DB_STATEMENT.getKey()); this.setSetTag(DDTags.RESOURCE_NAME); } + + + @Override + public boolean afterSetTag(final DDSpanContext context, final String tag, final Object value) { + //Assign service name + if (super.afterSetTag(context, tag, value)) { + // Replace the OT db.statement by the DD sql.query + context.setTag(DDTags.DB_STATEMENT, value); + context.getTags().remove(Tags.DB_STATEMENT.getKey()); + return true; + } + return false; + } } diff --git a/dd-trace/src/main/java/com/datadoghq/trace/integration/DBTypeDecorator.java b/dd-trace/src/main/java/com/datadoghq/trace/integration/DBTypeDecorator.java index ec6782fd86..5e58219124 100644 --- a/dd-trace/src/main/java/com/datadoghq/trace/integration/DBTypeDecorator.java +++ b/dd-trace/src/main/java/com/datadoghq/trace/integration/DBTypeDecorator.java @@ -21,7 +21,7 @@ public class DBTypeDecorator extends AbstractDecorator { //Assign service name if (super.afterSetTag(context, tag, value)) { //Assign span type to DB - context.setSpanType("db"); + context.setSpanType("sql"); // Works for: mongo, cassandra, jdbc context.setOperationName(String.valueOf(value) + ".query"); return true; diff --git a/dd-trace/src/main/resources/dd-trace-decorators.yaml b/dd-trace/src/main/resources/dd-trace-decorators.yaml index 5067f8aafb..d1c8919301 100644 --- a/dd-trace/src/main/resources/dd-trace-decorators.yaml +++ b/dd-trace/src/main/resources/dd-trace-decorators.yaml @@ -9,4 +9,5 @@ decorators: setValue: aws-client - type: ErrorFlag - type: DBTypeDecorator + - type: DBStatementAsResourceName - type: OperationDecorator