Skip to content

Commit 7043602

Browse files
committed
Merge branch 'main' of github.com:open-telemetry/opentelemetry-java-instrumentation into capture-code-attributes-spring-webflux
2 parents 33ec295 + b08d272 commit 7043602

File tree

47 files changed

+1246
-125
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+1246
-125
lines changed

benchmark-overhead/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ repositories {
1616
}
1717

1818
dependencies {
19-
implementation(enforcedPlatform("org.junit:junit-bom:5.11.3"))
19+
implementation(enforcedPlatform("org.junit:junit-bom:5.11.4"))
2020

2121
testImplementation("org.testcontainers:testcontainers:1.20.4")
2222
testImplementation("org.testcontainers:postgresql:1.20.4")

conventions/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ dependencies {
7171
implementation("net.ltgt.gradle:gradle-nullaway-plugin:2.1.0")
7272
implementation("me.champeau.gradle:japicmp-gradle-plugin:0.4.5")
7373

74-
testImplementation(enforcedPlatform("org.junit:junit-bom:5.11.3"))
74+
testImplementation(enforcedPlatform("org.junit:junit-bom:5.11.4"))
7575
testImplementation("org.junit.jupiter:junit-jupiter-api")
7676
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
7777
testImplementation("org.assertj:assertj-core:3.26.3")

dependencyManagement/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ val DEPENDENCY_BOMS = listOf(
3333
"org.apache.groovy:groovy-bom:${groovyVersion}",
3434
"io.opentelemetry:opentelemetry-bom:${otelSdkVersion}",
3535
"io.opentelemetry:opentelemetry-bom-alpha:${otelSdkAlphaVersion}",
36-
"org.junit:junit-bom:5.11.3",
36+
"org.junit:junit-bom:5.11.4",
3737
"org.testcontainers:testcontainers-bom:1.20.4",
3838
"org.spockframework:spock-bom:2.4-M4-groovy-4.0"
3939
)

docs/contributing/writing-instrumentation.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,47 @@ include("instrumentation:yarpc-1.0:library")
6868
include("instrumentation:yarpc-1.0:testing")
6969
```
7070

71+
### Instrumentation Submodules
72+
73+
When writing instrumentation that requires submodules for different versions, the name of each
74+
submodule must be prefixed with the name of the parent directory (typically the library or
75+
framework name).
76+
77+
As an example, if `yarpc` has instrumentation for two different versions, each version submodule
78+
must include the `yarpc` prefix before the version:
79+
80+
```
81+
instrumentation ->
82+
...
83+
yarpc ->
84+
yarpc-1.0 ->
85+
javaagent
86+
build.gradle.kts
87+
library
88+
build.gradle.kts
89+
testing
90+
build.gradle.kts
91+
yarpc-2.0 ->
92+
javaagent
93+
build.gradle.kts
94+
library
95+
build.gradle.kts
96+
testing
97+
build.gradle.kts
98+
```
99+
100+
After creating the submodules, they must be registered in the settings.gradle.kts file. Include each
101+
submodule explicitly to ensure it is recognized and built as part of the project. For example:
102+
103+
```kotlin
104+
include(":instrumentation:yarpc:yarpc-1.0:javaagent")
105+
include(":instrumentation:yarpc:yarpc-1.0:library")
106+
include(":instrumentation:yarpc:yarpc-1.0:testing")
107+
include(":instrumentation:yarpc:yarpc-2.0:javaagent")
108+
include(":instrumentation:yarpc:yarpc-2.0:library")
109+
include(":instrumentation:yarpc:yarpc-2.0:testing")
110+
```
111+
71112
## Writing library instrumentation
72113

73114
Start by creating the `build.gradle.kts` file in the `library`

examples/distro/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ subprojects {
3434
opentelemetryJavaagentAlpha: "2.11.0-alpha-SNAPSHOT",
3535

3636
autoservice : "1.1.1",
37-
junit : "5.11.3"
37+
junit : "5.11.4"
3838
]
3939

4040
deps = [

examples/extension/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ ext {
2929
opentelemetryJavaagent : "2.11.0-SNAPSHOT",
3030
opentelemetryJavaagentAlpha: "2.11.0-alpha-SNAPSHOT",
3131

32-
junit : "5.11.3"
32+
junit : "5.11.4"
3333
]
3434

3535
deps = [

gradle-plugins/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ dependencies {
4343

4444
testImplementation("org.assertj:assertj-core:3.26.3")
4545

46-
testImplementation(enforcedPlatform("org.junit:junit-bom:5.11.3"))
46+
testImplementation(enforcedPlatform("org.junit:junit-bom:5.11.4"))
4747
testImplementation("org.junit.jupiter:junit-jupiter-api")
4848
testImplementation("org.junit.jupiter:junit-jupiter-params")
4949
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")

instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientTelemetryBuilder.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import com.google.errorprone.annotations.CanIgnoreReturnValue;
99
import io.opentelemetry.api.OpenTelemetry;
10+
import io.opentelemetry.instrumentation.apachehttpclient.v4_3.internal.Experimental;
1011
import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpClientInstrumenterBuilder;
1112
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
1213
import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor;
@@ -23,6 +24,11 @@ public final class ApacheHttpClientTelemetryBuilder {
2324
private final DefaultHttpClientInstrumenterBuilder<ApacheHttpClientRequest, HttpResponse> builder;
2425
private final OpenTelemetry openTelemetry;
2526

27+
static {
28+
Experimental.setSetEmitExperimentalTelemetry(
29+
(builder, emit) -> builder.builder.setEmitExperimentalHttpClientMetrics(emit));
30+
}
31+
2632
ApacheHttpClientTelemetryBuilder(OpenTelemetry openTelemetry) {
2733
builder =
2834
DefaultHttpClientInstrumenterBuilder.create(
@@ -103,7 +109,11 @@ public ApacheHttpClientTelemetryBuilder setKnownMethods(Set<String> knownMethods
103109
*
104110
* @param emitExperimentalHttpClientMetrics {@code true} if the experimental HTTP client metrics
105111
* are to be emitted.
112+
* @deprecated Use {@link
113+
* Experimental#setEmitExperimentalTelemetry(ApacheHttpClientTelemetryBuilder, boolean)}
114+
* instead.
106115
*/
116+
@Deprecated
107117
@CanIgnoreReturnValue
108118
public ApacheHttpClientTelemetryBuilder setEmitExperimentalHttpClientMetrics(
109119
boolean emitExperimentalHttpClientMetrics) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.instrumentation.apachehttpclient.v4_3.internal;
7+
8+
import io.opentelemetry.instrumentation.apachehttpclient.v4_3.ApacheHttpClientTelemetryBuilder;
9+
import java.util.function.BiConsumer;
10+
import javax.annotation.Nullable;
11+
12+
/**
13+
* This class is internal and experimental. Its APIs are unstable and can change at any time. Its
14+
* APIs (or a version of them) may be promoted to the public stable API in the future, but no
15+
* guarantees are made.
16+
*/
17+
public final class Experimental {
18+
19+
@Nullable
20+
private static volatile BiConsumer<ApacheHttpClientTelemetryBuilder, Boolean>
21+
setEmitExperimentalTelemetry;
22+
23+
public static void setEmitExperimentalTelemetry(
24+
ApacheHttpClientTelemetryBuilder builder, boolean emitExperimentalTelemetry) {
25+
if (setEmitExperimentalTelemetry != null) {
26+
setEmitExperimentalTelemetry.accept(builder, emitExperimentalTelemetry);
27+
}
28+
}
29+
30+
public static void setSetEmitExperimentalTelemetry(
31+
BiConsumer<ApacheHttpClientTelemetryBuilder, Boolean> setEmitExperimentalTelemetry) {
32+
Experimental.setEmitExperimentalTelemetry = setEmitExperimentalTelemetry;
33+
}
34+
35+
private Experimental() {}
36+
}

instrumentation/java-http-client/library/src/main/java/io/opentelemetry/instrumentation/httpclient/JavaHttpClientTelemetryBuilder.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
1212
import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor;
1313
import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesExtractorBuilder;
14+
import io.opentelemetry.instrumentation.httpclient.internal.Experimental;
1415
import io.opentelemetry.instrumentation.httpclient.internal.HttpHeadersSetter;
1516
import io.opentelemetry.instrumentation.httpclient.internal.JavaHttpClientInstrumenterBuilderFactory;
1617
import java.net.http.HttpRequest;
@@ -24,6 +25,11 @@ public final class JavaHttpClientTelemetryBuilder {
2425
private final DefaultHttpClientInstrumenterBuilder<HttpRequest, HttpResponse<?>> builder;
2526
private final OpenTelemetry openTelemetry;
2627

28+
static {
29+
Experimental.setSetEmitExperimentalTelemetry(
30+
(builder, emit) -> builder.builder.setEmitExperimentalHttpClientMetrics(emit));
31+
}
32+
2733
JavaHttpClientTelemetryBuilder(OpenTelemetry openTelemetry) {
2834
builder = JavaHttpClientInstrumenterBuilderFactory.create(openTelemetry);
2935
this.openTelemetry = openTelemetry;
@@ -100,7 +106,11 @@ public JavaHttpClientTelemetryBuilder setKnownMethods(Set<String> knownMethods)
100106
*
101107
* @param emitExperimentalHttpClientMetrics {@code true} if the experimental HTTP client metrics
102108
* are to be emitted.
109+
* @deprecated Use {@link
110+
* Experimental#setEmitExperimentalTelemetry(JavaHttpClientTelemetryBuilder, boolean)}
111+
* instead.
103112
*/
113+
@Deprecated
104114
@CanIgnoreReturnValue
105115
public JavaHttpClientTelemetryBuilder setEmitExperimentalHttpClientMetrics(
106116
boolean emitExperimentalHttpClientMetrics) {

0 commit comments

Comments
 (0)