diff --git a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/jdbc/JDBCConnectionUrlParser.java b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/jdbc/JDBCConnectionUrlParser.java index 9f1099b6bfa..ce2c5bf77f4 100644 --- a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/jdbc/JDBCConnectionUrlParser.java +++ b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/jdbc/JDBCConnectionUrlParser.java @@ -73,7 +73,7 @@ DBInfo.Builder doParse(final String jdbcUrl, final DBInfo.Builder builder) { String instanceName = null; final int hostIndex = jdbcUrl.indexOf("://"); - if (hostIndex <= 0) { + if (hostIndex <= 0 || jdbcUrl.length() == 3 + hostIndex) { return builder; } diff --git a/dd-java-agent/instrumentation/jdbc/src/test/groovy/JDBCConnectionUrlParserTest.groovy b/dd-java-agent/instrumentation/jdbc/src/test/groovy/JDBCConnectionUrlParserTest.groovy index f1650e9b56c..27e78623117 100644 --- a/dd-java-agent/instrumentation/jdbc/src/test/groovy/JDBCConnectionUrlParserTest.groovy +++ b/dd-java-agent/instrumentation/jdbc/src/test/groovy/JDBCConnectionUrlParserTest.groovy @@ -32,6 +32,7 @@ class JDBCConnectionUrlParserTest extends InstrumentationSpecification { "" | _ "jdbc:" | _ "jdbc::" | _ + "jdbc://" | _ "bogus:string" | _ } @@ -209,6 +210,8 @@ class JDBCConnectionUrlParserTest extends InstrumentationSpecification { "jdbc:sybase:Tds:dbhostname:2638/dbname" | null | "sybase" | "tds" | null | "dbhostname" | 2638 | null | "dbname" // unknown DB type "jdbc:testdb://myhost:9999/testdatabase" | null | "testdb" | null | null | "myhost" | 9999 | null | "testdatabase" + // host missing + "jdbc:testdb://" | null | "testdb" | null | null | null | null | null | null expected = new DBInfo.Builder().type(type).subtype(subtype).user(user).instance(instance).db(db).host(host).port(port).build() } }