From d606acbb774780b7a07ac2956368e5ca2c8dbf2b Mon Sep 17 00:00:00 2001 From: Jordan Wong Date: Thu, 7 Nov 2024 17:03:42 -0500 Subject: [PATCH 1/9] add peer.service to the SQLCommenter when explicity specified, add tests for it --- .../instrumentation/jdbc/SQLCommenter.java | 134 ++++++++++++++++++ .../src/test/groovy/SQLCommenterTest.groovy | 85 ++++++++++- 2 files changed, 218 insertions(+), 1 deletion(-) diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java index 97925d561c8..ff6f52f94d7 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java @@ -1,6 +1,8 @@ package datadog.trace.instrumentation.jdbc; import datadog.trace.api.Config; +import datadog.trace.bootstrap.instrumentation.api.AgentSpan; +import datadog.trace.bootstrap.instrumentation.api.AgentTracer; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; @@ -15,6 +17,7 @@ public class SQLCommenter { private static final String DATABASE_SERVICE = encode("dddbs"); private static final String DD_HOSTNAME = encode("ddh"); private static final String DD_DB_NAME = encode("dddb"); + private static final String DD_PEER_SERVICE = encode("ddprs"); private static final String DD_ENV = encode("dde"); private static final String DD_VERSION = encode("ddpv"); private static final String TRACEPARENT = encode("traceparent"); @@ -25,6 +28,7 @@ public class SQLCommenter { private static final String OPEN_COMMENT = "/*"; private static final String CLOSE_COMMENT = "*/"; private static final int INITIAL_CAPACITY = computeInitialCapacity(); + private static final String DD_DB_INSTANCE = "ddprs"; public static String append( final String sql, @@ -140,6 +144,109 @@ public static String inject( return sb.toString(); } + public static String inject( + final String sql, + final String dbService, + final String dbType, + final String hostname, + final String dbName, + final String dbInstance, + final String traceParent, + final boolean injectTrace, + boolean appendComment) { + System.out.println("HELLO IN INJECT PEER SERVICE"); + + // Map tagMap = span.getTags(); + // Object peerService = tagMap.get(Tags.PEER_SERVICE); + + // String peerService = span.getTag(Tags.PEER_SERVICE); + AgentSpan currSpan = AgentTracer.activeSpan(); + // System.out.println(currSpan.getTags()); + // String myPeerService = currSpan.getTag(Tags.PEER_SERVICE).toString(); + // + // if (myPeerService != null) { + // System.out.print(myPeerService); + // } + + if (sql == null || sql.isEmpty()) { + return sql; + } + if (hasDDComment(sql, appendComment)) { + return sql; + } + + if (dbType != null) { + final String firstWord = getFirstWord(sql); + + // The Postgres JDBC parser doesn't allow SQL comments anywhere in a JDBC callable statements + // https://github.com/pgjdbc/pgjdbc/blob/master/pgjdbc/src/main/java/org/postgresql/core/Parser.java#L1038 + // TODO: Could we inject the comment after the JDBC has been converted to standard SQL? + if (firstWord.startsWith("{") && dbType.startsWith("postgres")) { + return sql; + } + + // Append the comment for mysql JDBC callable statements + if (firstWord.startsWith("{") && "mysql".equals(dbType)) { + appendComment = true; + } + + // Both Postgres and MySQL are unhappy with anything before CALL in a stored procedure + // invocation but they seem ok with it after so we force append mode + if (firstWord.equalsIgnoreCase("call")) { + appendComment = true; + } + } + final Config config = Config.get(); + final String parentService = config.getServiceName(); + final String env = config.getEnv(); + final String version = config.getVersion(); + // String configPeerService = config.getPeerServiceMapping().get(Tags.PEER_SERVICE); + // System.out.println(configPeerService); + + final int commentSize = capacity(traceParent, parentService, dbService, env, version); + StringBuilder sb = new StringBuilder(sql.length() + commentSize); + boolean commentAdded = false; + if (appendComment) { + sb.append(sql); + sb.append(SPACE); + sb.append(OPEN_COMMENT); + commentAdded = + toComment( + sb, + injectTrace, + parentService, + dbService, + hostname, + dbName, + dbInstance, + env, + version, + traceParent); + sb.append(CLOSE_COMMENT); + } else { + sb.append(OPEN_COMMENT); + commentAdded = + toComment( + sb, + injectTrace, + parentService, + dbService, + hostname, + dbName, + dbInstance, + env, + version, + traceParent); + sb.append(CLOSE_COMMENT); + sb.append(SPACE); + sb.append(sql); + } + if (!commentAdded) { + return sql; + } + return sb.toString(); + } + private static boolean hasDDComment(String sql, final boolean appendComment) { // first check to see if sql ends with a comment if ((!(sql.endsWith(CLOSE_COMMENT)) && appendComment) @@ -215,6 +322,33 @@ protected static boolean toComment( return sb.length() > emptySize; } + protected static boolean toComment( + StringBuilder sb, + final boolean injectTrace, + final String parentService, + final String dbService, + final String hostname, + final String dbName, + final String dbInstance, + final String env, + final String version, + final String traceparent) { + System.out.println("in the new to Comment"); + int emptySize = sb.length(); + System.out.println("DB INSTANCE PEER SERVICE:" + dbInstance); + append(sb, PARENT_SERVICE, parentService, false); + append(sb, DATABASE_SERVICE, dbService, sb.length() > emptySize); + append(sb, DD_HOSTNAME, hostname, sb.length() > emptySize); + append(sb, DD_DB_NAME, dbName, sb.length() > emptySize); + append(sb, DD_DB_INSTANCE, dbInstance, sb.length() > emptySize); + append(sb, DD_ENV, env, sb.length() > emptySize); + append(sb, DD_VERSION, version, sb.length() > emptySize); + if (injectTrace) { + append(sb, TRACEPARENT, traceparent, sb.length() > emptySize); + } + return sb.length() > emptySize; + } + private static void append(StringBuilder sb, String key, String value, boolean prependComma) { if (null != value && !value.isEmpty()) { try { diff --git a/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy b/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy index 5af1054460d..040fecf02ab 100644 --- a/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy +++ b/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy @@ -34,7 +34,7 @@ class SQLCommenterTest extends AgentTestRunner { when: String sqlWithComment = "" if (injectTrace) { - sqlWithComment = SQLCommenter.inject(query, dbService, dbType, host, dbName, traceParent, true, appendComment) + sqlWithComment = SQLCommenter.inject(query, dbService, dbType, host, dbName, traceParent, true, appendComment, false) } else { if (appendComment) { sqlWithComment = SQLCommenter.append(query, dbService, dbType, host, dbName) @@ -105,4 +105,87 @@ class SQLCommenterTest extends AgentTestRunner { "/*customer-comment*/ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "/*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/ /*customer-comment*/ SELECT * FROM foo" "/*traceparent" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "/*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/ /*traceparent" } + + def "test encode Sql Comment with peer service"() { + setup: + injectSysConfig("dd.service", ddService) + injectSysConfig("dd.env", ddEnv) + injectSysConfig("dd.version", ddVersion) + + when: + String sqlWithComment = "" + if (injectTrace) { + sqlWithComment = SQLCommenter.inject(query, dbService, dbType, host, dbName, peerService, traceParent, true, appendComment) + } else { + if (appendComment) { + sqlWithComment = SQLCommenter.append(query, dbService, dbType, host, dbName) + } else { + sqlWithComment = SQLCommenter.prepend(query, dbService, dbType, host, dbName) + } + } + + sqlWithComment == expected + + then: + sqlWithComment == expected + + where: + query | ddService | ddEnv | dbService | dbType | host | dbName | ddVersion | injectTrace | appendComment | traceParent | peerService | expected + "SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "SELECT * FROM foo /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" + "SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "postgres" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "SELECT * FROM foo /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" + "SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "testPeer" | "SELECT * FROM foo /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',ddprs='testPeer',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" + "SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "postgres" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "testPeer" | "SELECT * FROM foo /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',ddprs='testPeer',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" + "{call dogshelterProc(?, ?)}" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "{call dogshelterProc(?, ?)} /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" + "{call dogshelterProc(?, ?)}" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "{call dogshelterProc(?, ?)} /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" + "{call dogshelterProc(?, ?)}" | "SqlCommenter" | "Test" | "my-service" | "postgres" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "{call dogshelterProc(?, ?)}" + "CALL dogshelterProc(?, ?)" | "SqlCommenter" | "Test" | "my-service" | "postgres" | "h" | "n" | "TestVersion" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "CALL dogshelterProc(?, ?) /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" + "CALL dogshelterProc(?, ?)" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "CALL dogshelterProc(?, ?) /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" + "SELECT * FROM foo" | "" | "Test" | "" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "SELECT * FROM foo /*ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" + "SELECT * FROM foo" | "" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "SELECT * FROM foo /*dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" + "SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "" | "" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "SELECT * FROM foo /*ddps='SqlCommenter',dddbs='my-service',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" + "SELECT * FROM foo" | "" | "Test" | "" | "" | "h" | "n" | "" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "SELECT * FROM foo /*ddh='h',dddb='n',dde='Test',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" + "SELECT * FROM foo" | "" | "" | "" | "" | "h" | "n" | "" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "SELECT * FROM foo /*ddh='h',dddb='n',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" + "SELECT * FROM foo" | "" | "" | "" | "" | "" | "" | "" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "SELECT * FROM foo /*traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" + "SELECT * from FOO -- test query" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-01" | "" | "SELECT * from FOO -- test query /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-01'*/" + "SELECT /* customer-comment */ * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-01" | "" | "SELECT /* customer-comment */ * FROM foo /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-01'*/" + "SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "SELECT * FROM foo /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/" + "SELECT /* customer-comment */ * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "SELECT /* customer-comment */ * FROM foo /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/" + "SELECT * from FOO -- test query" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "SELECT * from FOO -- test query /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/" + "" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "" + " " | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-01" | "" | " /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-01'*/" + "" | "SqlCommenter" | "Test" | "postgres" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "" + " " | "SqlCommenter" | "Test" | "postgres" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-01" | "" | " /*ddps='SqlCommenter',dddbs='postgres',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-01'*/" + "SELECT * FROM foo /*dddbs='my-service',ddh='h',dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "SELECT * FROM foo /*dddbs='my-service',ddh='h',dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/" + "SELECT * FROM foo /*ddh='h',dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "SELECT * FROM foo /*ddh='h',dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/" + "SELECT * FROM foo /*dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "SELECT * FROM foo /*dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/" + "SELECT * FROM foo /*dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "SELECT * FROM foo /*dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/" + "SELECT * FROM foo /*ddps='SqlCommenter',ddpv='TestVersion'*/" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "SELECT * FROM foo /*ddps='SqlCommenter',ddpv='TestVersion'*/" + "SELECT * FROM foo /*ddpv='TestVersion'*/" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "SELECT * FROM foo /*ddpv='TestVersion'*/" + "/*ddjk its a customer */ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "/*ddjk its a customer */ SELECT * FROM foo /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/" + "SELECT * FROM foo /*traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-01'*/" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "SELECT * FROM foo /*traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-01'*/" + "/*customer-comment*/ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "/*customer-comment*/ SELECT * FROM foo /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/" + "/*traceparent" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "/*traceparent /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/" + "SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "/*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/ SELECT * FROM foo" + "SELECT * FROM foo" | "" | "Test" | "" | "mysql" | "h" | "n" | "TestVersion" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "/*ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/ SELECT * FROM foo" + "SELECT * FROM foo" | "" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "/*dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/ SELECT * FROM foo" + "SELECT * FROM foo" | "" | "Test" | "" | "" | "h" | "n" | "" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "/*ddh='h',dddb='n',dde='Test',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/ SELECT * FROM foo" + "SELECT * FROM foo" | "" | "" | "" | "" | "" | "" | "" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "/*traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/ SELECT * FROM foo" + "SELECT * from FOO -- test query" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-01" | "" | "/*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-01'*/ SELECT * from FOO -- test query" + "SELECT /* customer-comment */ * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-01" | "" | "/*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-01'*/ SELECT /* customer-comment */ * FROM foo" + "SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/ SELECT * FROM foo" + "SELECT /* customer-comment */ * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/ SELECT /* customer-comment */ * FROM foo" + "SELECT * from FOO -- test query" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/ SELECT * from FOO -- test query" + "" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "" + " " | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-01" | "" | "/*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-01'*/ " + "/*dddbs='my-service',ddh='h',dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*dddbs='my-service',ddh='h',dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/ SELECT * FROM foo" + "/*ddh='h',dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*ddh='h',dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/ SELECT * FROM foo" + "/*dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/ SELECT * FROM foo" + "/*dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/ SELECT * FROM foo" + "/*ddps='SqlCommenter',ddpv='TestVersion'*/ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*ddps='SqlCommenter',ddpv='TestVersion'*/ SELECT * FROM foo" + "/*ddpv='TestVersion'*/ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*ddpv='TestVersion'*/ SELECT * FROM foo" + "/*ddjk its a customer */ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/ /*ddjk its a customer */ SELECT * FROM foo" + "/*traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-01'*/ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-01'*/ SELECT * FROM foo" + "/*customer-comment*/ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/ /*customer-comment*/ SELECT * FROM foo" + "/*traceparent" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/ /*traceparent" + } } From 290f919affa238985f68fbe58fbe73b24e41dd29 Mon Sep 17 00:00:00 2001 From: Jordan Wong Date: Thu, 7 Nov 2024 17:37:04 -0500 Subject: [PATCH 2/9] Remove comments, cleanup --- .../instrumentation/jdbc/SQLCommenter.java | 23 ++----------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java index ff6f52f94d7..89b3222e5ca 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java @@ -1,8 +1,6 @@ package datadog.trace.instrumentation.jdbc; import datadog.trace.api.Config; -import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.api.AgentTracer; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; @@ -17,7 +15,7 @@ public class SQLCommenter { private static final String DATABASE_SERVICE = encode("dddbs"); private static final String DD_HOSTNAME = encode("ddh"); private static final String DD_DB_NAME = encode("dddb"); - private static final String DD_PEER_SERVICE = encode("ddprs"); + private static final String DD_DB_INSTANCE = "ddprs"; private static final String DD_ENV = encode("dde"); private static final String DD_VERSION = encode("ddpv"); private static final String TRACEPARENT = encode("traceparent"); @@ -28,7 +26,6 @@ public class SQLCommenter { private static final String OPEN_COMMENT = "/*"; private static final String CLOSE_COMMENT = "*/"; private static final int INITIAL_CAPACITY = computeInitialCapacity(); - private static final String DD_DB_INSTANCE = "ddprs"; public static String append( final String sql, @@ -154,19 +151,6 @@ public static String inject( final String traceParent, final boolean injectTrace, boolean appendComment) { - System.out.println("HELLO IN INJECT PEER SERVICE"); - - // Map tagMap = span.getTags(); - // Object peerService = tagMap.get(Tags.PEER_SERVICE); - - // String peerService = span.getTag(Tags.PEER_SERVICE); - AgentSpan currSpan = AgentTracer.activeSpan(); - // System.out.println(currSpan.getTags()); - // String myPeerService = currSpan.getTag(Tags.PEER_SERVICE).toString(); - // - // if (myPeerService != null) { - // System.out.print(myPeerService); - // } if (sql == null || sql.isEmpty()) { return sql; @@ -200,8 +184,6 @@ public static String inject( final String parentService = config.getServiceName(); final String env = config.getEnv(); final String version = config.getVersion(); - // String configPeerService = config.getPeerServiceMapping().get(Tags.PEER_SERVICE); - // System.out.println(configPeerService); final int commentSize = capacity(traceParent, parentService, dbService, env, version); StringBuilder sb = new StringBuilder(sql.length() + commentSize); @@ -333,9 +315,8 @@ protected static boolean toComment( final String env, final String version, final String traceparent) { - System.out.println("in the new to Comment"); int emptySize = sb.length(); - System.out.println("DB INSTANCE PEER SERVICE:" + dbInstance); + append(sb, PARENT_SERVICE, parentService, false); append(sb, DATABASE_SERVICE, dbService, sb.length() > emptySize); append(sb, DD_HOSTNAME, hostname, sb.length() > emptySize); From 2f55434df69f5bc3b003b4fc99894cc1ba491376 Mon Sep 17 00:00:00 2001 From: Jordan Wong Date: Wed, 13 Nov 2024 15:16:15 -0500 Subject: [PATCH 3/9] add working version with unit tests passing --- .../instrumentation/jdbc/SQLCommenter.java | 262 +++++++++++------- .../src/test/groovy/SQLCommenterTest.groovy | 95 +++---- 2 files changed, 198 insertions(+), 159 deletions(-) diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java index 89b3222e5ca..439111aa10f 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java @@ -1,6 +1,10 @@ package datadog.trace.instrumentation.jdbc; +import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; + import datadog.trace.api.Config; +import datadog.trace.bootstrap.instrumentation.api.AgentSpan; +import datadog.trace.bootstrap.instrumentation.api.Tags; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; @@ -66,6 +70,7 @@ public static String inject( final String traceParent, final boolean injectTrace, boolean appendComment) { + System.out.println("hello in the other inject"); if (sql == null || sql.isEmpty()) { return sql; } @@ -95,6 +100,16 @@ public static String inject( } } + // find the current span, check if it inlcudes peerservice, if it does get it and inject it in + // the SQL comments + AgentSpan currSpan = activeSpan(); + System.out.println(currSpan.toString()); + Object peerService = currSpan.getTag(Tags.PEER_SERVICE); + System.out.println("just tried getting peer service"); + if (peerService != null) { + System.out.println(peerService.toString()); + } + final Config config = Config.get(); final String parentService = config.getServiceName(); final String env = config.getEnv(); @@ -106,31 +121,61 @@ public static String inject( sb.append(sql); sb.append(SPACE); sb.append(OPEN_COMMENT); - commentAdded = - toComment( - sb, - injectTrace, - parentService, - dbService, - hostname, - dbName, - env, - version, - traceParent); + if (peerService != null) { + commentAdded = + toComment( + sb, + injectTrace, + parentService, + dbService, + hostname, + dbName, + peerService.toString(), + env, + version, + traceParent); + } else { + commentAdded = + toComment( + sb, + injectTrace, + parentService, + dbService, + hostname, + dbName, + env, + version, + traceParent); + } sb.append(CLOSE_COMMENT); } else { sb.append(OPEN_COMMENT); - commentAdded = - toComment( - sb, - injectTrace, - parentService, - dbService, - hostname, - dbName, - env, - version, - traceParent); + if (peerService != null) { + commentAdded = + toComment( + sb, + injectTrace, + parentService, + dbService, + hostname, + dbName, + peerService.toString(), + env, + version, + traceParent); + } else { + commentAdded = + toComment( + sb, + injectTrace, + parentService, + dbService, + hostname, + dbName, + env, + version, + traceParent); + } sb.append(CLOSE_COMMENT); sb.append(SPACE); sb.append(sql); @@ -140,94 +185,109 @@ public static String inject( } return sb.toString(); } + /* + public static String inject( + final String sql, + final String dbService, + final String dbType, + final String hostname, + final String dbName, + final String dbInstance, + final String traceParent, + final boolean injectTrace, + boolean appendComment) { + // inject with dbInstance / peer.service attribute + System.out.println("Hello in Peerservice inject"); + if (sql == null || sql.isEmpty()) { + return sql; + } + if (hasDDComment(sql, appendComment)) { + return sql; + } - public static String inject( - final String sql, - final String dbService, - final String dbType, - final String hostname, - final String dbName, - final String dbInstance, - final String traceParent, - final boolean injectTrace, - boolean appendComment) { + if (dbType != null) { + final String firstWord = getFirstWord(sql); - if (sql == null || sql.isEmpty()) { - return sql; - } - if (hasDDComment(sql, appendComment)) { - return sql; - } + // The Postgres JDBC parser doesn't allow SQL comments anywhere in a JDBC callable statements + // https://github.com/pgjdbc/pgjdbc/blob/master/pgjdbc/src/main/java/org/postgresql/core/Parser.java#L1038 + // TODO: Could we inject the comment after the JDBC has been converted to standard SQL? + if (firstWord.startsWith("{") && dbType.startsWith("postgres")) { + return sql; + } - if (dbType != null) { - final String firstWord = getFirstWord(sql); + // Append the comment for mysql JDBC callable statements + if (firstWord.startsWith("{") && "mysql".equals(dbType)) { + appendComment = true; + } - // The Postgres JDBC parser doesn't allow SQL comments anywhere in a JDBC callable statements - // https://github.com/pgjdbc/pgjdbc/blob/master/pgjdbc/src/main/java/org/postgresql/core/Parser.java#L1038 - // TODO: Could we inject the comment after the JDBC has been converted to standard SQL? - if (firstWord.startsWith("{") && dbType.startsWith("postgres")) { - return sql; + // Both Postgres and MySQL are unhappy with anything before CALL in a stored procedure + // invocation but they seem ok with it after so we force append mode + if (firstWord.equalsIgnoreCase("call")) { + appendComment = true; + } } - // Append the comment for mysql JDBC callable statements - if (firstWord.startsWith("{") && "mysql".equals(dbType)) { - appendComment = true; + // find the current span, check if it inlcudes peerservice, if it does get it and inject it in the SQL comments + AgentSpan currSpan = activeSpan(); + System.out.println(currSpan.toString()); + Object peerService = currSpan.getTag(Tags.PEER_SERVICE); + System.out.println("just tried getting peer service"); + if (peerService != null) { + System.out.println(peerService.toString()); } - // Both Postgres and MySQL are unhappy with anything before CALL in a stored procedure - // invocation but they seem ok with it after so we force append mode - if (firstWord.equalsIgnoreCase("call")) { - appendComment = true; - } - } - final Config config = Config.get(); - final String parentService = config.getServiceName(); - final String env = config.getEnv(); - final String version = config.getVersion(); - final int commentSize = capacity(traceParent, parentService, dbService, env, version); - StringBuilder sb = new StringBuilder(sql.length() + commentSize); - boolean commentAdded = false; - if (appendComment) { - sb.append(sql); - sb.append(SPACE); - sb.append(OPEN_COMMENT); - commentAdded = - toComment( - sb, - injectTrace, - parentService, - dbService, - hostname, - dbName, - dbInstance, - env, - version, - traceParent); - sb.append(CLOSE_COMMENT); - } else { - sb.append(OPEN_COMMENT); - commentAdded = - toComment( - sb, - injectTrace, - parentService, - dbService, - hostname, - dbName, - dbInstance, - env, - version, - traceParent); - sb.append(CLOSE_COMMENT); - sb.append(SPACE); - sb.append(sql); - } - if (!commentAdded) { - return sql; - } - return sb.toString(); - } + final Config config = Config.get(); + final String parentService = config.getServiceName(); + // if (SpanNaming.instance().namingSchema().allowInferredServices()) { + // dbService = parentService; + // } + final String env = config.getEnv(); + final String version = config.getVersion(); + + final int commentSize = capacity(traceParent, parentService, dbService, env, version); + StringBuilder sb = new StringBuilder(sql.length() + commentSize); + boolean commentAdded = false; + if (appendComment) { + sb.append(sql); + sb.append(SPACE); + sb.append(OPEN_COMMENT); + commentAdded = + toComment( + sb, + injectTrace, + parentService, + dbService, + hostname, + dbName, + dbInstance, + env, + version, + traceParent); + sb.append(CLOSE_COMMENT); + } else { + sb.append(OPEN_COMMENT); + commentAdded = + toComment( + sb, + injectTrace, + parentService, + dbService, + hostname, + dbName, + dbInstance, + env, + version, + traceParent); + sb.append(CLOSE_COMMENT); + sb.append(SPACE); + sb.append(sql); + } + if (!commentAdded) { + return sql; + } + return sb.toString(); + }*/ private static boolean hasDDComment(String sql, final boolean appendComment) { // first check to see if sql ends with a comment diff --git a/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy b/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy index 040fecf02ab..16795e691dc 100644 --- a/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy +++ b/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy @@ -1,6 +1,12 @@ import datadog.trace.agent.test.AgentTestRunner +import datadog.trace.bootstrap.instrumentation.api.AgentSpan +import datadog.trace.bootstrap.instrumentation.api.AgentTracer +import datadog.trace.bootstrap.instrumentation.api.Tags + import datadog.trace.instrumentation.jdbc.SQLCommenter +import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace + class SQLCommenterTest extends AgentTestRunner { def "test find first word"() { @@ -111,81 +117,54 @@ class SQLCommenterTest extends AgentTestRunner { injectSysConfig("dd.service", ddService) injectSysConfig("dd.env", ddEnv) injectSysConfig("dd.version", ddVersion) + //DDSpan testSpan = TEST_TRACER.buildSpan("fooInstrumentation", "op name").withServiceName("foo").start() + when: + System.out.println("Setting peerservice") + System.out.println(peerService) + + //testSpan.setTag(Tags.PEER_SERVICE, peerService); + //System.out.println(testSpan.tags); + //AgentSpan testSpan = CoreTracer.CoreSpanBuilder.buildSpan("testing"); + + //DefaultLoghandlerTest.groovy + + //DDSpan testSpan = runUnderTrace("test"); + + //AgentTracer.activateSpan(testSpan); String sqlWithComment = "" - if (injectTrace) { - sqlWithComment = SQLCommenter.inject(query, dbService, dbType, host, dbName, peerService, traceParent, true, appendComment) - } else { - if (appendComment) { - sqlWithComment = SQLCommenter.append(query, dbService, dbType, host, dbName) + runUnderTrace("testTrace"){ + AgentSpan currSpan = AgentTracer.activeSpan() + currSpan.setTag(Tags.PEER_SERVICE, peerService) + + if (injectTrace) { + sqlWithComment = SQLCommenter.inject(query, dbService, dbType, host, dbName, traceParent, true, appendComment) } else { - sqlWithComment = SQLCommenter.prepend(query, dbService, dbType, host, dbName) + if (appendComment) { + sqlWithComment = SQLCommenter.append(query, dbService, dbType, host, dbName) + } else { + sqlWithComment = SQLCommenter.prepend(query, dbService, dbType, host, dbName) + } } } + sqlWithComment == expected then: sqlWithComment == expected + cleanup: + //testSpan = null; + //TEST_TRACER.flush() + //TEST_SPANS.clear() + where: query | ddService | ddEnv | dbService | dbType | host | dbName | ddVersion | injectTrace | appendComment | traceParent | peerService | expected "SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "SELECT * FROM foo /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" "SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "postgres" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "SELECT * FROM foo /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" "SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "testPeer" | "SELECT * FROM foo /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',ddprs='testPeer',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" "SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "postgres" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "testPeer" | "SELECT * FROM foo /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',ddprs='testPeer',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" - "{call dogshelterProc(?, ?)}" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "{call dogshelterProc(?, ?)} /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" - "{call dogshelterProc(?, ?)}" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "{call dogshelterProc(?, ?)} /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" - "{call dogshelterProc(?, ?)}" | "SqlCommenter" | "Test" | "my-service" | "postgres" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "{call dogshelterProc(?, ?)}" - "CALL dogshelterProc(?, ?)" | "SqlCommenter" | "Test" | "my-service" | "postgres" | "h" | "n" | "TestVersion" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "CALL dogshelterProc(?, ?) /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" - "CALL dogshelterProc(?, ?)" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "CALL dogshelterProc(?, ?) /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" - "SELECT * FROM foo" | "" | "Test" | "" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "SELECT * FROM foo /*ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" - "SELECT * FROM foo" | "" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "SELECT * FROM foo /*dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" - "SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "" | "" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "SELECT * FROM foo /*ddps='SqlCommenter',dddbs='my-service',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" - "SELECT * FROM foo" | "" | "Test" | "" | "" | "h" | "n" | "" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "SELECT * FROM foo /*ddh='h',dddb='n',dde='Test',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" - "SELECT * FROM foo" | "" | "" | "" | "" | "h" | "n" | "" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "SELECT * FROM foo /*ddh='h',dddb='n',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" - "SELECT * FROM foo" | "" | "" | "" | "" | "" | "" | "" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "SELECT * FROM foo /*traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" - "SELECT * from FOO -- test query" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-01" | "" | "SELECT * from FOO -- test query /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-01'*/" - "SELECT /* customer-comment */ * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-01" | "" | "SELECT /* customer-comment */ * FROM foo /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-01'*/" - "SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "SELECT * FROM foo /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/" - "SELECT /* customer-comment */ * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "SELECT /* customer-comment */ * FROM foo /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/" - "SELECT * from FOO -- test query" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "SELECT * from FOO -- test query /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/" - "" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "" - " " | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-01" | "" | " /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-01'*/" - "" | "SqlCommenter" | "Test" | "postgres" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "" - " " | "SqlCommenter" | "Test" | "postgres" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-01" | "" | " /*ddps='SqlCommenter',dddbs='postgres',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-01'*/" - "SELECT * FROM foo /*dddbs='my-service',ddh='h',dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "SELECT * FROM foo /*dddbs='my-service',ddh='h',dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/" - "SELECT * FROM foo /*ddh='h',dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "SELECT * FROM foo /*ddh='h',dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/" - "SELECT * FROM foo /*dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "SELECT * FROM foo /*dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/" - "SELECT * FROM foo /*dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "SELECT * FROM foo /*dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/" - "SELECT * FROM foo /*ddps='SqlCommenter',ddpv='TestVersion'*/" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "SELECT * FROM foo /*ddps='SqlCommenter',ddpv='TestVersion'*/" - "SELECT * FROM foo /*ddpv='TestVersion'*/" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "SELECT * FROM foo /*ddpv='TestVersion'*/" - "/*ddjk its a customer */ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "/*ddjk its a customer */ SELECT * FROM foo /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/" - "SELECT * FROM foo /*traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-01'*/" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "SELECT * FROM foo /*traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-01'*/" - "/*customer-comment*/ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "/*customer-comment*/ SELECT * FROM foo /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/" - "/*traceparent" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | true | null | "" | "/*traceparent /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/" - "SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "/*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/ SELECT * FROM foo" - "SELECT * FROM foo" | "" | "Test" | "" | "mysql" | "h" | "n" | "TestVersion" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "/*ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/ SELECT * FROM foo" - "SELECT * FROM foo" | "" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "/*dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/ SELECT * FROM foo" - "SELECT * FROM foo" | "" | "Test" | "" | "" | "h" | "n" | "" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "/*ddh='h',dddb='n',dde='Test',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/ SELECT * FROM foo" - "SELECT * FROM foo" | "" | "" | "" | "" | "" | "" | "" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "/*traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/ SELECT * FROM foo" - "SELECT * from FOO -- test query" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-01" | "" | "/*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-01'*/ SELECT * from FOO -- test query" - "SELECT /* customer-comment */ * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-01" | "" | "/*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-01'*/ SELECT /* customer-comment */ * FROM foo" - "SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/ SELECT * FROM foo" - "SELECT /* customer-comment */ * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/ SELECT /* customer-comment */ * FROM foo" - "SELECT * from FOO -- test query" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/ SELECT * from FOO -- test query" - "" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "" - " " | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | false | "00-00000000000000007fffffffffffffff-000000024cb016ea-01" | "" | "/*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-01'*/ " - "/*dddbs='my-service',ddh='h',dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*dddbs='my-service',ddh='h',dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/ SELECT * FROM foo" - "/*ddh='h',dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*ddh='h',dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/ SELECT * FROM foo" - "/*dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*dddb='n',dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/ SELECT * FROM foo" - "/*dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*dde='Test',ddps='SqlCommenter',ddpv='TestVersion'*/ SELECT * FROM foo" - "/*ddps='SqlCommenter',ddpv='TestVersion'*/ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*ddps='SqlCommenter',ddpv='TestVersion'*/ SELECT * FROM foo" - "/*ddpv='TestVersion'*/ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*ddpv='TestVersion'*/ SELECT * FROM foo" - "/*ddjk its a customer */ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/ /*ddjk its a customer */ SELECT * FROM foo" - "/*traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-01'*/ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-01'*/ SELECT * FROM foo" - "/*customer-comment*/ SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/ /*customer-comment*/ SELECT * FROM foo" - "/*traceparent" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | false | false | null | "" | "/*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion'*/ /*traceparent" } } From 64baa3f43a6cc6486b6ad0a16d62d5218e91ed8e Mon Sep 17 00:00:00 2001 From: Jordan Wong Date: Wed, 13 Nov 2024 15:20:17 -0500 Subject: [PATCH 4/9] remove comments and dev print statements --- .../instrumentation/jdbc/SQLCommenter.java | 111 ------------------ .../src/test/groovy/SQLCommenterTest.groovy | 21 ---- 2 files changed, 132 deletions(-) diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java index 439111aa10f..5a4196a5e86 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java @@ -70,7 +70,6 @@ public static String inject( final String traceParent, final boolean injectTrace, boolean appendComment) { - System.out.println("hello in the other inject"); if (sql == null || sql.isEmpty()) { return sql; } @@ -100,15 +99,8 @@ public static String inject( } } - // find the current span, check if it inlcudes peerservice, if it does get it and inject it in - // the SQL comments AgentSpan currSpan = activeSpan(); - System.out.println(currSpan.toString()); Object peerService = currSpan.getTag(Tags.PEER_SERVICE); - System.out.println("just tried getting peer service"); - if (peerService != null) { - System.out.println(peerService.toString()); - } final Config config = Config.get(); final String parentService = config.getServiceName(); @@ -185,109 +177,6 @@ public static String inject( } return sb.toString(); } - /* - public static String inject( - final String sql, - final String dbService, - final String dbType, - final String hostname, - final String dbName, - final String dbInstance, - final String traceParent, - final boolean injectTrace, - boolean appendComment) { - // inject with dbInstance / peer.service attribute - System.out.println("Hello in Peerservice inject"); - if (sql == null || sql.isEmpty()) { - return sql; - } - if (hasDDComment(sql, appendComment)) { - return sql; - } - - if (dbType != null) { - final String firstWord = getFirstWord(sql); - - // The Postgres JDBC parser doesn't allow SQL comments anywhere in a JDBC callable statements - // https://github.com/pgjdbc/pgjdbc/blob/master/pgjdbc/src/main/java/org/postgresql/core/Parser.java#L1038 - // TODO: Could we inject the comment after the JDBC has been converted to standard SQL? - if (firstWord.startsWith("{") && dbType.startsWith("postgres")) { - return sql; - } - - // Append the comment for mysql JDBC callable statements - if (firstWord.startsWith("{") && "mysql".equals(dbType)) { - appendComment = true; - } - - // Both Postgres and MySQL are unhappy with anything before CALL in a stored procedure - // invocation but they seem ok with it after so we force append mode - if (firstWord.equalsIgnoreCase("call")) { - appendComment = true; - } - } - - // find the current span, check if it inlcudes peerservice, if it does get it and inject it in the SQL comments - AgentSpan currSpan = activeSpan(); - System.out.println(currSpan.toString()); - Object peerService = currSpan.getTag(Tags.PEER_SERVICE); - System.out.println("just tried getting peer service"); - if (peerService != null) { - System.out.println(peerService.toString()); - } - - - final Config config = Config.get(); - final String parentService = config.getServiceName(); - // if (SpanNaming.instance().namingSchema().allowInferredServices()) { - // dbService = parentService; - // } - final String env = config.getEnv(); - final String version = config.getVersion(); - - final int commentSize = capacity(traceParent, parentService, dbService, env, version); - StringBuilder sb = new StringBuilder(sql.length() + commentSize); - boolean commentAdded = false; - if (appendComment) { - sb.append(sql); - sb.append(SPACE); - sb.append(OPEN_COMMENT); - commentAdded = - toComment( - sb, - injectTrace, - parentService, - dbService, - hostname, - dbName, - dbInstance, - env, - version, - traceParent); - sb.append(CLOSE_COMMENT); - } else { - sb.append(OPEN_COMMENT); - commentAdded = - toComment( - sb, - injectTrace, - parentService, - dbService, - hostname, - dbName, - dbInstance, - env, - version, - traceParent); - sb.append(CLOSE_COMMENT); - sb.append(SPACE); - sb.append(sql); - } - if (!commentAdded) { - return sql; - } - return sb.toString(); - }*/ private static boolean hasDDComment(String sql, final boolean appendComment) { // first check to see if sql ends with a comment diff --git a/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy b/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy index 16795e691dc..bc0cc70f084 100644 --- a/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy +++ b/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy @@ -117,22 +117,8 @@ class SQLCommenterTest extends AgentTestRunner { injectSysConfig("dd.service", ddService) injectSysConfig("dd.env", ddEnv) injectSysConfig("dd.version", ddVersion) - //DDSpan testSpan = TEST_TRACER.buildSpan("fooInstrumentation", "op name").withServiceName("foo").start() - when: - System.out.println("Setting peerservice") - System.out.println(peerService) - - //testSpan.setTag(Tags.PEER_SERVICE, peerService); - //System.out.println(testSpan.tags); - //AgentSpan testSpan = CoreTracer.CoreSpanBuilder.buildSpan("testing"); - - //DefaultLoghandlerTest.groovy - - //DDSpan testSpan = runUnderTrace("test"); - - //AgentTracer.activateSpan(testSpan); String sqlWithComment = "" runUnderTrace("testTrace"){ AgentSpan currSpan = AgentTracer.activeSpan() @@ -148,18 +134,11 @@ class SQLCommenterTest extends AgentTestRunner { } } } - - sqlWithComment == expected then: sqlWithComment == expected - cleanup: - //testSpan = null; - //TEST_TRACER.flush() - //TEST_SPANS.clear() - where: query | ddService | ddEnv | dbService | dbType | host | dbName | ddVersion | injectTrace | appendComment | traceParent | peerService | expected "SELECT * FROM foo" | "SqlCommenter" | "Test" | "my-service" | "mysql" | "h" | "n" | "TestVersion" | true | true | "00-00000000000000007fffffffffffffff-000000024cb016ea-00" | "" | "SELECT * FROM foo /*ddps='SqlCommenter',dddbs='my-service',ddh='h',dddb='n',dde='Test',ddpv='TestVersion',traceparent='00-00000000000000007fffffffffffffff-000000024cb016ea-00'*/" From 22cc7579dcb797046b420a7413408c991da1e11b Mon Sep 17 00:00:00 2001 From: Jordan Wong Date: Fri, 15 Nov 2024 15:24:10 -0500 Subject: [PATCH 5/9] remove accidentally added extra param --- .../jdbc/src/test/groovy/SQLCommenterTest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy b/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy index bc0cc70f084..458940a8513 100644 --- a/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy +++ b/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy @@ -40,7 +40,7 @@ class SQLCommenterTest extends AgentTestRunner { when: String sqlWithComment = "" if (injectTrace) { - sqlWithComment = SQLCommenter.inject(query, dbService, dbType, host, dbName, traceParent, true, appendComment, false) + sqlWithComment = SQLCommenter.inject(query, dbService, dbType, host, dbName, traceParent, true, appendComment) } else { if (appendComment) { sqlWithComment = SQLCommenter.append(query, dbService, dbType, host, dbName) From 2e5fe0d4289a5ce8f93219ba0e8c781a0d2a8dcd Mon Sep 17 00:00:00 2001 From: Jordan Wong Date: Fri, 15 Nov 2024 15:25:35 -0500 Subject: [PATCH 6/9] add null check for ActiveSpan --- .../datadog/trace/instrumentation/jdbc/SQLCommenter.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java index 5a4196a5e86..17c3355bc5e 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java @@ -100,7 +100,10 @@ public static String inject( } AgentSpan currSpan = activeSpan(); - Object peerService = currSpan.getTag(Tags.PEER_SERVICE); + Object peerService = null; + if (currSpan != null) { + peerService = currSpan.getTag(Tags.PEER_SERVICE); + } final Config config = Config.get(); final String parentService = config.getServiceName(); From 6fa70ce20b4f9b64663eeb2ec343eae4af8cf447 Mon Sep 17 00:00:00 2001 From: Jordan Wong Date: Tue, 19 Nov 2024 10:46:01 -0500 Subject: [PATCH 7/9] refactor toComment behavior --- .../jdbc/SQLCommenterBenchmark.java | 1 + .../instrumentation/jdbc/SQLCommenter.java | 86 +++++++------------ 2 files changed, 33 insertions(+), 54 deletions(-) diff --git a/dd-java-agent/instrumentation/jdbc/src/jmh/java/datadog/trace/instrumentation/jdbc/SQLCommenterBenchmark.java b/dd-java-agent/instrumentation/jdbc/src/jmh/java/datadog/trace/instrumentation/jdbc/SQLCommenterBenchmark.java index e2a5b195416..195b221d2bc 100644 --- a/dd-java-agent/instrumentation/jdbc/src/jmh/java/datadog/trace/instrumentation/jdbc/SQLCommenterBenchmark.java +++ b/dd-java-agent/instrumentation/jdbc/src/jmh/java/datadog/trace/instrumentation/jdbc/SQLCommenterBenchmark.java @@ -33,6 +33,7 @@ public void testToComment() { dbService, hostname, dbName, + null, env, version, traceParent); diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java index 17c3355bc5e..5f352aac37e 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java @@ -112,65 +112,40 @@ public static String inject( final int commentSize = capacity(traceParent, parentService, dbService, env, version); StringBuilder sb = new StringBuilder(sql.length() + commentSize); boolean commentAdded = false; + String peerServiceString = peerService != null ? peerService.toString() : null; + if (appendComment) { sb.append(sql); sb.append(SPACE); sb.append(OPEN_COMMENT); - if (peerService != null) { - commentAdded = - toComment( - sb, - injectTrace, - parentService, - dbService, - hostname, - dbName, - peerService.toString(), - env, - version, - traceParent); - } else { - commentAdded = - toComment( - sb, - injectTrace, - parentService, - dbService, - hostname, - dbName, - env, - version, - traceParent); - } + commentAdded = + toComment( + sb, + injectTrace, + parentService, + dbService, + hostname, + dbName, + peerServiceString, + env, + version, + traceParent); sb.append(CLOSE_COMMENT); } else { sb.append(OPEN_COMMENT); - if (peerService != null) { - commentAdded = - toComment( - sb, - injectTrace, - parentService, - dbService, - hostname, - dbName, - peerService.toString(), - env, - version, - traceParent); - } else { - commentAdded = - toComment( - sb, - injectTrace, - parentService, - dbService, - hostname, - dbName, - env, - version, - traceParent); - } + commentAdded = + toComment( + sb, + injectTrace, + parentService, + dbService, + hostname, + dbName, + peerService.toString(), + env, + version, + traceParent); + sb.append(CLOSE_COMMENT); sb.append(SPACE); sb.append(sql); @@ -233,6 +208,7 @@ private static String encode(final String val) { return val; } + /* protected static boolean toComment( StringBuilder sb, final boolean injectTrace, @@ -254,7 +230,7 @@ protected static boolean toComment( append(sb, TRACEPARENT, traceparent, sb.length() > emptySize); } return sb.length() > emptySize; - } + }*/ protected static boolean toComment( StringBuilder sb, @@ -273,7 +249,9 @@ protected static boolean toComment( append(sb, DATABASE_SERVICE, dbService, sb.length() > emptySize); append(sb, DD_HOSTNAME, hostname, sb.length() > emptySize); append(sb, DD_DB_NAME, dbName, sb.length() > emptySize); - append(sb, DD_DB_INSTANCE, dbInstance, sb.length() > emptySize); + if (dbInstance != null) { + append(sb, DD_DB_INSTANCE, dbInstance, sb.length() > emptySize); + } append(sb, DD_ENV, env, sb.length() > emptySize); append(sb, DD_VERSION, version, sb.length() > emptySize); if (injectTrace) { From d94a7462a000fcc2d27b09efac8bb2ad458a40b1 Mon Sep 17 00:00:00 2001 From: Jordan Wong Date: Tue, 19 Nov 2024 10:52:19 -0500 Subject: [PATCH 8/9] fix small bug --- .../java/datadog/trace/instrumentation/jdbc/SQLCommenter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java index 5f352aac37e..0771c3256a7 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java @@ -141,7 +141,7 @@ public static String inject( dbService, hostname, dbName, - peerService.toString(), + peerServiceString, env, version, traceParent); From 69b16cc7afb416f369de3da260e70cce708b7f5e Mon Sep 17 00:00:00 2001 From: Jordan Wong Date: Fri, 17 Jan 2025 15:49:11 -0500 Subject: [PATCH 9/9] clean up PR, rename variables and refactor test logic for readability --- .../instrumentation/jdbc/SQLCommenter.java | 42 ++++--------------- .../src/test/groovy/SQLCommenterTest.groovy | 25 +++++------ 2 files changed, 20 insertions(+), 47 deletions(-) diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java index 0771c3256a7..979a08e7232 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java @@ -19,7 +19,7 @@ public class SQLCommenter { private static final String DATABASE_SERVICE = encode("dddbs"); private static final String DD_HOSTNAME = encode("ddh"); private static final String DD_DB_NAME = encode("dddb"); - private static final String DD_DB_INSTANCE = "ddprs"; + private static final String DD_PEER_SERVICE = "ddprs"; private static final String DD_ENV = encode("dde"); private static final String DD_VERSION = encode("ddpv"); private static final String TRACEPARENT = encode("traceparent"); @@ -100,9 +100,9 @@ public static String inject( } AgentSpan currSpan = activeSpan(); - Object peerService = null; + Object peerServiceObj = null; if (currSpan != null) { - peerService = currSpan.getTag(Tags.PEER_SERVICE); + peerServiceObj = currSpan.getTag(Tags.PEER_SERVICE); } final Config config = Config.get(); @@ -112,7 +112,7 @@ public static String inject( final int commentSize = capacity(traceParent, parentService, dbService, env, version); StringBuilder sb = new StringBuilder(sql.length() + commentSize); boolean commentAdded = false; - String peerServiceString = peerService != null ? peerService.toString() : null; + String peerService = peerServiceObj != null ? peerServiceObj.toString() : null; if (appendComment) { sb.append(sql); @@ -126,7 +126,7 @@ public static String inject( dbService, hostname, dbName, - peerServiceString, + peerService, env, version, traceParent); @@ -141,7 +141,7 @@ public static String inject( dbService, hostname, dbName, - peerServiceString, + peerService, env, version, traceParent); @@ -208,7 +208,6 @@ private static String encode(final String val) { return val; } - /* protected static boolean toComment( StringBuilder sb, final boolean injectTrace, @@ -216,30 +215,7 @@ protected static boolean toComment( final String dbService, final String hostname, final String dbName, - final String env, - final String version, - final String traceparent) { - int emptySize = sb.length(); - append(sb, PARENT_SERVICE, parentService, false); - append(sb, DATABASE_SERVICE, dbService, sb.length() > emptySize); - append(sb, DD_HOSTNAME, hostname, sb.length() > emptySize); - append(sb, DD_DB_NAME, dbName, sb.length() > emptySize); - append(sb, DD_ENV, env, sb.length() > emptySize); - append(sb, DD_VERSION, version, sb.length() > emptySize); - if (injectTrace) { - append(sb, TRACEPARENT, traceparent, sb.length() > emptySize); - } - return sb.length() > emptySize; - }*/ - - protected static boolean toComment( - StringBuilder sb, - final boolean injectTrace, - final String parentService, - final String dbService, - final String hostname, - final String dbName, - final String dbInstance, + final String peerService, final String env, final String version, final String traceparent) { @@ -249,8 +225,8 @@ protected static boolean toComment( append(sb, DATABASE_SERVICE, dbService, sb.length() > emptySize); append(sb, DD_HOSTNAME, hostname, sb.length() > emptySize); append(sb, DD_DB_NAME, dbName, sb.length() > emptySize); - if (dbInstance != null) { - append(sb, DD_DB_INSTANCE, dbInstance, sb.length() > emptySize); + if (peerService != null) { + append(sb, DD_PEER_SERVICE, peerService, sb.length() > emptySize); } append(sb, DD_ENV, env, sb.length() > emptySize); append(sb, DD_VERSION, version, sb.length() > emptySize); diff --git a/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy b/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy index 458940a8513..a91f4b1d386 100644 --- a/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy +++ b/dd-java-agent/instrumentation/jdbc/src/test/groovy/SQLCommenterTest.groovy @@ -41,15 +41,13 @@ class SQLCommenterTest extends AgentTestRunner { String sqlWithComment = "" if (injectTrace) { sqlWithComment = SQLCommenter.inject(query, dbService, dbType, host, dbName, traceParent, true, appendComment) - } else { - if (appendComment) { - sqlWithComment = SQLCommenter.append(query, dbService, dbType, host, dbName) - } else { - sqlWithComment = SQLCommenter.prepend(query, dbService, dbType, host, dbName) - } + } else if (appendComment) { + sqlWithComment = SQLCommenter.append(query, dbService, dbType, host, dbName) + } + else { + sqlWithComment = SQLCommenter.prepend(query, dbService, dbType, host, dbName) } - sqlWithComment == expected then: sqlWithComment == expected @@ -126,15 +124,14 @@ class SQLCommenterTest extends AgentTestRunner { if (injectTrace) { sqlWithComment = SQLCommenter.inject(query, dbService, dbType, host, dbName, traceParent, true, appendComment) - } else { - if (appendComment) { - sqlWithComment = SQLCommenter.append(query, dbService, dbType, host, dbName) - } else { - sqlWithComment = SQLCommenter.prepend(query, dbService, dbType, host, dbName) - } + } + else if (appendComment) { + sqlWithComment = SQLCommenter.append(query, dbService, dbType, host, dbName) + } + else { + sqlWithComment = SQLCommenter.prepend(query, dbService, dbType, host, dbName) } } - sqlWithComment == expected then: sqlWithComment == expected