Skip to content

Commit 5bdd827

Browse files
committed
review
1 parent 1dc624c commit 5bdd827

File tree

23 files changed

+192
-287
lines changed

23 files changed

+192
-287
lines changed

docs/supported-libraries.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ These are the supported libraries and frameworks:
5151
| [AWS SDK](https://aws.amazon.com/sdk-for-java/) | 1.11 - 1.12.583,<br>2.2+ | [opentelemetry-aws-sdk-1.11](../instrumentation/aws-sdk/aws-sdk-1.11/library),<br>[opentelemetry-aws-sdk-1.11-autoconfigure](../instrumentation/aws-sdk/aws-sdk-1.11/library-autoconfigure),<br>[opentelemetry-aws-sdk-2.2](../instrumentation/aws-sdk/aws-sdk-2.2/library),<br>[opentelemetry-aws-sdk-2.2-autoconfigure](../instrumentation/aws-sdk/aws-sdk-2.2/library-autoconfigure) | [Messaging Spans], [Database Client Spans], [Database Client Metrics]&nbsp;[6], [HTTP Client Spans], [GenAI Client Spans], [GenAI Client Metrics] |
5252
| [Azure Core](https://docs.microsoft.com/en-us/java/api/overview/azure/core-readme) | 1.14+ | N/A | Context propagation |
5353
| [Cassandra Driver](https://github.com/datastax/java-driver) | 3.0+ | [opentelemetry-cassandra-4.4](../instrumentation/cassandra/cassandra-4.4/library) | [Database Client Spans], [Database Client Metrics]&nbsp;[6] |
54-
| [Clickhouse ClientV1](https://github.com/ClickHouse/clickhouse-java) | 0.5+ | N/A | [Database Client Spans], [Database Client Metrics]&nbsp;[6] |
55-
| [Clickhouse ClientV2](https://github.com/ClickHouse/clickhouse-java) | 0.8+ | N/A | [Database Client Spans], [Database Client Metrics]&nbsp;[6] |
54+
| [Clickhouse Client V1](https://github.com/ClickHouse/clickhouse-java) | 0.5+ | N/A | [Database Client Spans], [Database Client Metrics]&nbsp;[6] |
55+
| [Clickhouse Client V2](https://github.com/ClickHouse/clickhouse-java) | 0.8+ | N/A | [Database Client Spans], [Database Client Metrics]&nbsp;[6] |
5656
| [Couchbase Client](https://github.com/couchbase/couchbase-java-client) | 2.0 - 2.7.x | N/A | [Database Client Spans], [Database Client Metrics]&nbsp;[6] |
5757
| [Couchbase Client](https://github.com/couchbase/couchbase-java-client) | 3.1+ | N/A | [Database Client Spans] |
5858
| [c3p0](https://github.com/swaldman/c3p0) | 0.9.2+ | [opentelemetry-c3p0-0.9](../instrumentation/c3p0-0.9/library) | [Database Pool Metrics] |

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

Lines changed: 0 additions & 29 deletions
This file was deleted.

instrumentation/clickhouse/clickhouse-client-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/common/ClickHouseAttributesGetter.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,18 @@
77

88
import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientAttributesGetter;
99
import io.opentelemetry.semconv.incubating.DbIncubatingAttributes;
10+
import java.util.function.Function;
1011
import javax.annotation.Nullable;
1112

12-
public class ClickHouseAttributesGetter
13+
final class ClickHouseAttributesGetter
1314
implements DbClientAttributesGetter<ClickHouseDbRequest, Void> {
1415

16+
private final Function<Throwable, String> errorCodeExtractor;
17+
18+
ClickHouseAttributesGetter(Function<Throwable, String> errorCodeExtractor) {
19+
this.errorCodeExtractor = errorCodeExtractor;
20+
}
21+
1522
@Nullable
1623
@Override
1724
public String getDbQueryText(ClickHouseDbRequest request) {
@@ -63,6 +70,6 @@ public String getConnectionString(ClickHouseDbRequest request) {
6370
@Nullable
6471
@Override
6572
public String getResponseStatus(@Nullable Void response, @Nullable Throwable error) {
66-
return null;
73+
return errorCodeExtractor.apply(error);
6774
}
6875
}

instrumentation/clickhouse/clickhouse-client-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/common/ClickHouseDbRequest.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,26 @@
99
import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlStatementInfo;
1010
import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlStatementSanitizer;
1111
import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig;
12+
import javax.annotation.Nullable;
1213

1314
@AutoValue
1415
public abstract class ClickHouseDbRequest {
1516

1617
private static final SqlStatementSanitizer sanitizer =
1718
SqlStatementSanitizer.create(AgentCommonConfig.get().isStatementSanitizationEnabled());
1819

19-
public static ClickHouseDbRequest create(String host, int port, String dbName, String sql) {
20+
public static ClickHouseDbRequest create(
21+
@Nullable String host, @Nullable Integer port, @Nullable String dbName, String sql) {
2022
return new AutoValue_ClickHouseDbRequest(host, port, dbName, sanitizer.sanitize(sql));
2123
}
2224

25+
@Nullable
2326
public abstract String getHost();
2427

25-
public abstract int getPort();
28+
@Nullable
29+
public abstract Integer getPort();
2630

31+
@Nullable
2732
public abstract String getDbName();
2833

2934
public abstract SqlStatementInfo getSqlStatementInfo();

instrumentation/clickhouse/clickhouse-client-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/common/ClickHouseInstrumenterFactory.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,15 @@
1212
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
1313
import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor;
1414
import io.opentelemetry.instrumentation.api.semconv.network.ServerAttributesExtractor;
15+
import java.util.function.Function;
1516

1617
public final class ClickHouseInstrumenterFactory {
1718

1819
public static Instrumenter<ClickHouseDbRequest, Void> createInstrumenter(
19-
String instrumenterName, ClickHouseAttributesGetter dbAttributesGetter) {
20+
String instrumenterName, Function<Throwable, String> errorCodeExtractor) {
21+
ClickHouseAttributesGetter dbAttributesGetter =
22+
new ClickHouseAttributesGetter(errorCodeExtractor);
23+
2024
return Instrumenter.<ClickHouseDbRequest, Void>builder(
2125
GlobalOpenTelemetry.get(),
2226
instrumenterName,

instrumentation/clickhouse/clickhouse-client-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/clickhouse/common/ClickHouseScope.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,17 @@ public final class ClickHouseScope {
1414
private final ClickHouseDbRequest clickHouseDbRequest;
1515
private final Context context;
1616
private final Scope scope;
17+
private final Instrumenter<ClickHouseDbRequest, Void> instrumenter;
1718

18-
private ClickHouseScope(ClickHouseDbRequest clickHouseDbRequest, Context context, Scope scope) {
19+
private ClickHouseScope(
20+
ClickHouseDbRequest clickHouseDbRequest,
21+
Context context,
22+
Scope scope,
23+
Instrumenter<ClickHouseDbRequest, Void> instrumenter) {
1924
this.clickHouseDbRequest = clickHouseDbRequest;
2025
this.context = context;
2126
this.scope = scope;
27+
this.instrumenter = instrumenter;
2228
}
2329

2430
public static ClickHouseScope start(
@@ -30,10 +36,10 @@ public static ClickHouseScope start(
3036
}
3137

3238
Context context = instrumenter.start(parentContext, clickHouseDbRequest);
33-
return new ClickHouseScope(clickHouseDbRequest, context, context.makeCurrent());
39+
return new ClickHouseScope(clickHouseDbRequest, context, context.makeCurrent(), instrumenter);
3440
}
3541

36-
public void end(Instrumenter<ClickHouseDbRequest, Void> instrumenter, Throwable throwable) {
42+
public void end(Throwable throwable) {
3743
scope.close();
3844
instrumenter.end(context, clickHouseDbRequest, null, throwable);
3945
}

instrumentation/clickhouse/clickhouse-client-0.5/javaagent/build.gradle.kts renamed to instrumentation/clickhouse/clickhouse-client-v1-0.5/javaagent/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ dependencies {
1616
compileOnly("com.clickhouse:clickhouse-client:0.5.0")
1717

1818
testImplementation("com.google.guava:guava")
19-
testImplementation(project(":instrumentation:clickhouse:testing"))
2019
testLibrary("com.clickhouse:clickhouse-client:0.5.0")
2120
testLibrary("com.clickhouse:clickhouse-http-client:0.5.0")
2221
testLibrary("org.apache.httpcomponents.client5:httpclient5:5.2.3")
Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.javaagent.instrumentation.clickhouse.client.v0_5;
6+
package io.opentelemetry.javaagent.instrumentation.clickhouse.clientv1.v0_5;
77

88
import static io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge.currentContext;
99
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface;
10+
import static io.opentelemetry.javaagent.instrumentation.clickhouse.clientv1.v0_5.ClickHouseClientV1Singletons.instrumenter;
1011
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
1112
import static net.bytebuddy.matcher.ElementMatchers.named;
1213
import static net.bytebuddy.matcher.ElementMatchers.namedOneOf;
@@ -16,8 +17,6 @@
1617
import com.clickhouse.client.ClickHouseRequest;
1718
import com.clickhouse.client.ClickHouseRequestAccess;
1819
import com.clickhouse.client.config.ClickHouseDefaults;
19-
import io.opentelemetry.context.Context;
20-
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
2120
import io.opentelemetry.javaagent.bootstrap.CallDepth;
2221
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
2322
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
@@ -39,24 +38,20 @@ public void transform(TypeTransformer transformer) {
3938
isMethod()
4039
.and(namedOneOf("executeAndWait", "execute"))
4140
.and(takesArgument(0, named("com.clickhouse.client.ClickHouseRequest"))),
42-
this.getClass().getName() + "$ClickHouseClientV1ExecuteAndWaitAdvice");
41+
this.getClass().getName() + "$ExecuteAndWaitAdvice");
4342
}
4443

4544
@SuppressWarnings("unused")
46-
public static class ClickHouseClientV1ExecuteAndWaitAdvice {
45+
public static class ExecuteAndWaitAdvice {
4746
@Advice.OnMethodEnter(suppress = Throwable.class)
4847
public static ClickHouseScope onEnter(
4948
@Advice.Argument(0) ClickHouseRequest<?> clickHouseRequest) {
50-
Instrumenter<ClickHouseDbRequest, Void> instrumenter =
51-
ClickHouseClientV1Singletons.instrumenter();
5249

5350
CallDepth callDepth = CallDepth.forClass(ClickHouseClient.class);
5451
if (callDepth.getAndIncrement() > 0 || clickHouseRequest == null) {
5552
return null;
5653
}
5754

58-
Context parentContext = currentContext();
59-
6055
ClickHouseDbRequest request =
6156
ClickHouseDbRequest.create(
6257
clickHouseRequest.getServer().getHost(),
@@ -67,22 +62,19 @@ public static ClickHouseScope onEnter(
6762
.orElse(ClickHouseDefaults.DATABASE.getDefaultValue().toString()),
6863
ClickHouseRequestAccess.getQuery(clickHouseRequest));
6964

70-
return ClickHouseScope.start(instrumenter, parentContext, request);
65+
return ClickHouseScope.start(instrumenter(), currentContext(), request);
7166
}
7267

7368
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
7469
public static void onExit(
7570
@Advice.Thrown Throwable throwable, @Advice.Enter ClickHouseScope scope) {
7671

77-
Instrumenter<ClickHouseDbRequest, Void> instrumenter =
78-
ClickHouseClientV1Singletons.instrumenter();
79-
8072
CallDepth callDepth = CallDepth.forClass(ClickHouseClient.class);
8173
if (callDepth.decrementAndGet() > 0 || scope == null) {
8274
return;
8375
}
8476

85-
scope.end(instrumenter, throwable);
77+
scope.end(throwable);
8678
}
8779
}
8880
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.javaagent.instrumentation.clickhouse.client.v0_5;
6+
package io.opentelemetry.javaagent.instrumentation.clickhouse.clientv1.v0_5;
77

88
import static java.util.Collections.singletonList;
99

@@ -18,7 +18,7 @@ public class ClickHouseClientV1InstrumentationModule extends InstrumentationModu
1818
implements ExperimentalInstrumentationModule {
1919

2020
public ClickHouseClientV1InstrumentationModule() {
21-
super("clickhouse-client", "clickhouse-client-0.5", "clickhouse");
21+
super("clickhouse-client-v1", "clickhouse-client-v1-0.5", "clickhouse", "clickhouse-client");
2222
}
2323

2424
@Override

0 commit comments

Comments
 (0)