Skip to content
Open
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions .fossa.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,6 @@ targets:
- type: gradle
path: ./
target: ':instrumentation:camel-2.20:javaagent'
- type: gradle
path: ./
target: ':instrumentation:clickhouse-client-0.5:javaagent'
- type: gradle
path: ./
target: ':instrumentation:executors:bootstrap'
Expand Down Expand Up @@ -391,6 +388,15 @@ targets:
- type: gradle
path: ./
target: ':instrumentation:cassandra:cassandra-4.4:library'
- type: gradle
path: ./
target: ':instrumentation:clickhouse:clickhouse-client-0.5:javaagent'
- type: gradle
path: ./
target: ':instrumentation:clickhouse:clickhouse-client-common:javaagent'
- type: gradle
path: ./
target: ':instrumentation:clickhouse:clickhouse-clientv2-0.8:javaagent'
- type: gradle
path: ./
target: ':instrumentation:couchbase:couchbase-2-common:javaagent'
Expand Down
3 changes: 2 additions & 1 deletion docs/supported-libraries.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ These are the supported libraries and frameworks:
| [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] |
| [Azure Core](https://docs.microsoft.com/en-us/java/api/overview/azure/core-readme) | 1.14+ | N/A | Context propagation |
| [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] |
| [Clickhouse Client](https://github.com/ClickHouse/clickhouse-java) | 0.5+ | N/A | [Database Client Spans], [Database Client Metrics]&nbsp;[6] |
| [Clickhouse ClientV1](https://github.com/ClickHouse/clickhouse-java) | 0.5+ | N/A | [Database Client Spans], [Database Client Metrics]&nbsp;[6] |
| [Clickhouse ClientV2](https://github.com/ClickHouse/clickhouse-java) | 0.8+ | N/A | [Database Client Spans], [Database Client Metrics]&nbsp;[6] |
| [Couchbase Client](https://github.com/couchbase/couchbase-java-client) | 2.0 - 2.7.x | N/A | [Database Client Spans], [Database Client Metrics]&nbsp;[6] |
| [Couchbase Client](https://github.com/couchbase/couchbase-java-client) | 3.1+ | N/A | [Database Client Spans] |
| [c3p0](https://github.com/swaldman/c3p0) | 0.9.2+ | [opentelemetry-c3p0-0.9](../instrumentation/c3p0-0.9/library) | [Database Pool Metrics] |
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ muzzle {
}

dependencies {
implementation(project(":instrumentation:clickhouse:clickhouse-client-common:javaagent"))
compileOnly("com.clickhouse:clickhouse-client:0.5.0")
compileOnly("com.google.auto.value:auto-value-annotations")
annotationProcessor("com.google.auto.value:auto-value")

testImplementation("com.google.guava:guava")
testImplementation(project(":instrumentation:clickhouse:testing"))
testLibrary("com.clickhouse:clickhouse-client:0.5.0")
testLibrary("com.clickhouse:clickhouse-http-client:0.5.0")
testLibrary("org.apache.httpcomponents.client5:httpclient5:5.2.3")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.javaagent.instrumentation.clickhouse.client.v0_5;

import com.clickhouse.client.ClickHouseException;
import io.opentelemetry.instrumentation.api.incubator.semconv.db.DbClientAttributesGetter;
import io.opentelemetry.javaagent.instrumentation.clickhouse.common.ClickHouseAttributesGetter;
import io.opentelemetry.javaagent.instrumentation.clickhouse.common.ClickHouseDbRequest;
import javax.annotation.Nullable;

public final class ClickHouseClientV1AttributesGetter extends ClickHouseAttributesGetter
implements DbClientAttributesGetter<ClickHouseDbRequest, Void> {

public static ClickHouseClientV1AttributesGetter create() {
return new ClickHouseClientV1AttributesGetter();
}

@Nullable
@Override
public String getResponseStatus(@Nullable Void response, @Nullable Throwable error) {
if (error instanceof ClickHouseException) {
return Integer.toString(((ClickHouseException) error).getErrorCode());
}
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.javaagent.instrumentation.clickhouse;
package io.opentelemetry.javaagent.instrumentation.clickhouse.client.v0_5;

import static io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge.currentContext;
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface;
Expand All @@ -17,14 +17,17 @@
import com.clickhouse.client.ClickHouseRequestAccess;
import com.clickhouse.client.config.ClickHouseDefaults;
import io.opentelemetry.context.Context;
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
import io.opentelemetry.javaagent.bootstrap.CallDepth;
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
import io.opentelemetry.javaagent.instrumentation.clickhouse.common.ClickHouseDbRequest;
import io.opentelemetry.javaagent.instrumentation.clickhouse.common.ClickHouseScope;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.matcher.ElementMatcher;

public class ClickHouseClientInstrumentation implements TypeInstrumentation {
public class ClickHouseClientV1Instrumentation implements TypeInstrumentation {
@Override
public ElementMatcher<TypeDescription> typeMatcher() {
return implementsInterface(named("com.clickhouse.client.ClickHouseClient"));
Expand All @@ -36,14 +39,16 @@ public void transform(TypeTransformer transformer) {
isMethod()
.and(namedOneOf("executeAndWait", "execute"))
.and(takesArgument(0, named("com.clickhouse.client.ClickHouseRequest"))),
this.getClass().getName() + "$ClickHouseExecuteAndWaitAdvice");
this.getClass().getName() + "$ClickHouseClientV1ExecuteAndWaitAdvice");
}

@SuppressWarnings("unused")
public static class ClickHouseExecuteAndWaitAdvice {
public static class ClickHouseClientV1ExecuteAndWaitAdvice {
@Advice.OnMethodEnter(suppress = Throwable.class)
public static ClickHouseScope onEnter(
@Advice.Argument(0) ClickHouseRequest<?> clickHouseRequest) {
Instrumenter<ClickHouseDbRequest, Void> instrumenter =
ClickHouseClientV1Singletons.instrumenter();

CallDepth callDepth = CallDepth.forClass(ClickHouseClient.class);
if (callDepth.getAndIncrement() > 0 || clickHouseRequest == null) {
Expand All @@ -62,19 +67,22 @@ public static ClickHouseScope onEnter(
.orElse(ClickHouseDefaults.DATABASE.getDefaultValue().toString()),
ClickHouseRequestAccess.getQuery(clickHouseRequest));

return ClickHouseScope.start(parentContext, request);
return ClickHouseScope.start(instrumenter, parentContext, request);
}

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

Instrumenter<ClickHouseDbRequest, Void> instrumenter =
ClickHouseClientV1Singletons.instrumenter();

CallDepth callDepth = CallDepth.forClass(ClickHouseClient.class);
if (callDepth.decrementAndGet() > 0 || scope == null) {
return;
}

scope.end(throwable);
scope.end(instrumenter, throwable);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.javaagent.instrumentation.clickhouse;
package io.opentelemetry.javaagent.instrumentation.clickhouse.client.v0_5;

import static java.util.Collections.singletonList;

Expand All @@ -14,10 +14,10 @@
import java.util.List;

@AutoService(InstrumentationModule.class)
public class ClickHouseInstrumentationModule extends InstrumentationModule
public class ClickHouseClientV1InstrumentationModule extends InstrumentationModule
implements ExperimentalInstrumentationModule {

public ClickHouseInstrumentationModule() {
public ClickHouseClientV1InstrumentationModule() {
super("clickhouse-client", "clickhouse-client-0.5", "clickhouse");
}

Expand All @@ -33,6 +33,6 @@ public List<String> injectedClassNames() {

@Override
public List<TypeInstrumentation> typeInstrumentations() {
return singletonList(new ClickHouseClientInstrumentation());
return singletonList(new ClickHouseClientV1Instrumentation());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.javaagent.instrumentation.clickhouse.client.v0_5;

import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
import io.opentelemetry.javaagent.instrumentation.clickhouse.common.ClickHouseDbRequest;
import io.opentelemetry.javaagent.instrumentation.clickhouse.common.ClickHouseInstrumenterFactory;

public final class ClickHouseClientV1Singletons {

private static final String INSTRUMENTER_NAME = "io.opentelemetry.clickhouse-client-0.5";
private static final Instrumenter<ClickHouseDbRequest, Void> INSTRUMENTER;

static {
INSTRUMENTER =
ClickHouseInstrumenterFactory.createInstrumenter(
INSTRUMENTER_NAME, ClickHouseClientV1AttributesGetter.create());
}

public static Instrumenter<ClickHouseDbRequest, Void> instrumenter() {
return INSTRUMENTER;
}

private ClickHouseClientV1Singletons() {}
}
Loading
Loading