Disable elasticsearch-rest-7.0 instrumentation when elasticsearch-jav… (#9450)
This commit is contained in:
parent
d6ff40e421
commit
91e668ec76
|
@ -24,7 +24,7 @@ dependencies {
|
|||
testImplementation("org.testcontainers:elasticsearch")
|
||||
|
||||
// 8.10+ has native, on-by-default opentelemetry instrumentation
|
||||
latestDepTestLibrary("co.elastic.clients:elasticsearch-java:8.0.+")
|
||||
latestDepTestLibrary("co.elastic.clients:elasticsearch-java:8.9.+")
|
||||
}
|
||||
|
||||
tasks {
|
||||
|
|
|
@ -10,6 +10,15 @@ muzzle {
|
|||
assertInverse.set(true)
|
||||
}
|
||||
|
||||
fail {
|
||||
group.set("org.elasticsearch.client")
|
||||
module.set("elasticsearch-rest-client")
|
||||
versions.set("[8.10,)")
|
||||
// elasticsearch-java 8.10+ has native, on-by-default opentelemetry instrumentation
|
||||
// we disable our elasticsearch-rest-client instrumentation when elasticsearch-java is present
|
||||
extraDependency("co.elastic.clients:elasticsearch-java:8.10.0")
|
||||
}
|
||||
|
||||
fail {
|
||||
group.set("org.elasticsearch.client")
|
||||
module.set("rest")
|
||||
|
|
|
@ -7,6 +7,7 @@ package io.opentelemetry.javaagent.instrumentation.elasticsearch.rest.v7_0;
|
|||
|
||||
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed;
|
||||
import static java.util.Collections.singletonList;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.not;
|
||||
|
||||
import com.google.auto.service.AutoService;
|
||||
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
|
||||
|
@ -23,7 +24,12 @@ public class ElasticsearchRest7InstrumentationModule extends InstrumentationModu
|
|||
@Override
|
||||
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
|
||||
// Class `org.elasticsearch.client.RestClient$InternalRequest` introduced in 7.0.0.
|
||||
return hasClassesNamed("org.elasticsearch.client.RestClient$InternalRequest");
|
||||
// Since Elasticsearch client version 8.10, the ES client comes with a native OTel
|
||||
// instrumentation that introduced the class
|
||||
// `co.elastic.clients.transport.instrumentation.Instrumentation`.
|
||||
// Disabling agent instrumentation for those cases.
|
||||
return hasClassesNamed("org.elasticsearch.client.RestClient$InternalRequest")
|
||||
.and(not(hasClassesNamed("co.elastic.clients.transport.instrumentation.Instrumentation")));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue