Skip to content

Commit 57d9c49

Browse files
authored
Fix ClickHouse tracing when database name not included in connection string (#11852)
1 parent 145185e commit 57d9c49

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

instrumentation/clickhouse-client-0.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/ClickHouseClientInstrumentation.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import com.clickhouse.client.ClickHouseClient;
1717
import com.clickhouse.client.ClickHouseRequest;
18+
import com.clickhouse.client.config.ClickHouseDefaults;
1819
import io.opentelemetry.context.Context;
1920
import io.opentelemetry.context.Scope;
2021
import io.opentelemetry.javaagent.bootstrap.CallDepth;
@@ -63,7 +64,10 @@ public static void onEnter(
6364
ClickHouseDbRequest.create(
6465
clickHouseRequest.getServer().getHost(),
6566
clickHouseRequest.getServer().getPort(),
66-
clickHouseRequest.getServer().getDatabase().get(),
67+
clickHouseRequest
68+
.getServer()
69+
.getDatabase()
70+
.orElse(ClickHouseDefaults.DATABASE.getDefaultValue().toString()),
6771
clickHouseRequest.getPreparedQuery().getOriginalQuery());
6872

6973
if (!instrumenter().shouldStart(parentContext, request)) {

instrumentation/clickhouse-client-0.5/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/clickhouse/ClickHouseClientTest.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,31 @@ void cleanup() {
8181
clickhouseServer.stop();
8282
}
8383

84+
@Test
85+
void testConnectionStringWithoutDatabaseSpecifiedStillGeneratesSpans()
86+
throws ClickHouseException {
87+
ClickHouseNode server = ClickHouseNode.of("http://" + host + ":" + port + "?compress=0");
88+
ClickHouseClient client = ClickHouseClient.builder().build();
89+
90+
ClickHouseResponse response =
91+
client
92+
.read(server)
93+
.format(ClickHouseFormat.RowBinaryWithNamesAndTypes)
94+
.query("select * from " + tableName)
95+
.executeAndWait();
96+
response.close();
97+
98+
testing.waitAndAssertTraces(
99+
trace ->
100+
trace.hasSpansSatisfyingExactly(
101+
span ->
102+
span.hasName("SELECT " + dbName)
103+
.hasKind(SpanKind.CLIENT)
104+
.hasNoParent()
105+
.hasAttributesSatisfyingExactly(
106+
attributeAssertions("select * from " + tableName, "SELECT"))));
107+
}
108+
84109
@Test
85110
void testExecuteAndWaitWithStringQuery() throws ClickHouseException {
86111
testing.runWithSpan(

0 commit comments

Comments
 (0)