Skip to content

Commit d170dd4

Browse files
authored
Merge branch 'main' into feature/helidon
2 parents 2033b03 + e69ab73 commit d170dd4

File tree

102 files changed

+1714
-838
lines changed

Some content is hidden

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

102 files changed

+1714
-838
lines changed

.github/renovate.json5

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,17 @@
112112
'io.opentelemetry:{/,}**',
113113
],
114114
},
115+
{
116+
// junit 6+ requires Java 17+
117+
matchPackageNames: [
118+
'org.junit:**',
119+
'org.junit.jupiter:**',
120+
],
121+
matchUpdateTypes: [
122+
'major',
123+
],
124+
enabled: false,
125+
},
115126
{
116127
// junit-pioneer 2+ requires Java 11+
117128
matchPackageNames: [

.github/workflows/issue-management-stale-action.yml

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,19 @@ jobs:
1313
stale:
1414
permissions:
1515
contents: read
16+
actions: write # because actions/stale deletes its old cache before saving new one
1617
issues: write # for actions/stale to close stale issues
1718
pull-requests: write # for actions/stale to close stale PRs
1819
runs-on: ubuntu-latest
1920
steps:
21+
# Action #1: Handle issues/PRs awaiting author feedback
22+
# - After 7 days inactive: Adds "stale" label + warning comment
23+
# - After 7 more days inactive: Closes
2024
- uses: actions/stale@3a9db7e6a41a89f618792c92c0e97cc736e1b13f # v10.0.0
2125
with:
26+
only-labels: "needs author feedback"
2227
days-before-stale: 7
2328
days-before-close: 7
24-
only-labels: "needs author feedback"
2529
stale-issue-label: stale
2630
stale-issue-message: >
2731
This issue has been labeled as stale due to lack of activity and needing author feedback.
@@ -31,19 +35,27 @@ jobs:
3135
This PR has been labeled as stale due to lack of activity and needing author feedback.
3236
It will be automatically closed if there is no further activity over the next 7 days.
3337
38+
# Action #2: Close old enhancement requests
39+
# - Targets: Issues with "enhancement" label (but NOT "needs author feedback")
40+
# - After 365 days inactive: Adds "stale" label + closes immediately (no warning period)
41+
# - Skips: Issues with "needs author feedback" to avoid conflicts with Action #1
3442
- uses: actions/stale@3a9db7e6a41a89f618792c92c0e97cc736e1b13f # v10.0.0
3543
with:
44+
only-labels: "enhancement"
45+
# Skip issues that need author feedback (handled by the first action with 7+7 day policy)
46+
exempt-issue-labels: "needs author feedback"
47+
days-before-pr-stale: -1
48+
days-before-pr-close: -1
3649
days-before-stale: 365
3750
days-before-close: 0
3851
close-issue-label: stale
3952
close-issue-message: >
4053
Since there has been no activity on this enhancement for the past year we are closing it to help maintain our backlog.
4154
Anyone who would like to work on it is still welcome to do so, and we can re-open it at that time.
42-
days-before-pr-stale: -1
43-
days-before-pr-close: -1
44-
only-labels: "enhancement"
45-
exempt-issue-labels: "stale" # so that it won't close issues labeled as stale by "needs author feedback"
4655
56+
# Action #3: Handle stale PRs
57+
# - After 180 days inactive: Adds "stale" label + warning comment
58+
# - After 14 more days inactive: Closes
4759
- uses: actions/stale@3a9db7e6a41a89f618792c92c0e97cc736e1b13f # v10.0.0
4860
with:
4961
days-before-issue-stale: -1

CONTRIBUTING.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,18 @@ the file name to stay consistent across versions. To do so, add the following to
6262
removeJarVersionNumbers=true
6363
```
6464

65+
## Working with fork repositories
66+
67+
If you forked this repository, some GitHub Actions workflows may fail due to missing secrets or permissions. To avoid unnecessary workflow failure notifications:
68+
69+
### Disabling GitHub Actions in your fork
70+
71+
**Option 1: Disable all workflows** - Go to Settings > Actions > General, select "Disable actions", and save
72+
73+
**Option 2: Disable specific workflows** - Go to Actions tab, click a workflow, click "..." menu, and select "Disable workflow"
74+
75+
Either option still allows you to contribute via pull requests to the main repository.
76+
6577
## IntelliJ setup and troubleshooting
6678

6779
See [IntelliJ setup and troubleshooting](docs/contributing/intellij-setup-and-troubleshooting.md)
@@ -99,7 +111,7 @@ See [Understanding Muzzle](docs/contributing/muzzle.md)
99111
The build logs are very long and there is a lot of parallelization, so the logs can be hard to
100112
decipher, but if you expand the "Build scan" step, you should see something like:
101113

102-
```
114+
```text
103115
Run cat build-scan.txt
104116
https://gradle.com/s/ila4qwp5lcf5s
105117
```

benchmark-jfr-analyzer/src/main/java/io/opentelemetry/javaagent/benchmark/jfr/Analyzer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ private static Set<String> getAgentCallers(List<RecordedEvent> events) {
6565
@Nullable
6666
private static String getAgentCaller(RecordedStackTrace stackTrace) {
6767
List<RecordedFrame> frames = stackTrace.getFrames();
68-
for (int i = frames.size() - 1; i >= 0; i--) {
68+
for (int i = frames.size() - 2; i >= 0; i--) {
6969
RecordedFrame frame = frames.get(i);
7070
RecordedMethod method = frame.getMethod();
7171
if (isAgentMethod(method)) {

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.13.4"))
19+
implementation(enforcedPlatform("org.junit:junit-bom:5.14.0"))
2020

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

conventions/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ dependencies {
5858
implementation("com.google.guava:guava:33.5.0-jre")
5959
implementation("com.gradleup.shadow:shadow-gradle-plugin:9.2.2")
6060
implementation("org.apache.httpcomponents:httpclient:4.5.14")
61-
implementation("com.gradle.develocity:com.gradle.develocity.gradle.plugin:4.2")
61+
implementation("com.gradle.develocity:com.gradle.develocity.gradle.plugin:4.2.1")
6262
implementation("org.owasp:dependency-check-gradle:12.1.6")
6363
implementation("ru.vyarus:gradle-animalsniffer-plugin:2.0.1")
6464
implementation("org.spdx:spdx-gradle-plugin:0.9.0")
@@ -70,7 +70,7 @@ dependencies {
7070
implementation("net.ltgt.gradle:gradle-nullaway-plugin:2.3.0")
7171
implementation("me.champeau.gradle:japicmp-gradle-plugin:0.4.6")
7272

73-
testImplementation(enforcedPlatform("org.junit:junit-bom:5.13.4"))
73+
testImplementation(enforcedPlatform("org.junit:junit-bom:5.14.0"))
7474
testImplementation("org.junit.jupiter:junit-jupiter-api")
7575
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
7676
testImplementation("org.assertj:assertj-core:3.27.6")

dependencyManagement/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ val CORE_DEPENDENCIES = listOf(
8080
// There are dependencies included here that appear to have no usages, but are maintained at
8181
// this top level to help consistently satisfy large numbers of transitive dependencies.
8282
val DEPENDENCIES = listOf(
83-
"org.junit.jupiter:junit-jupiter-api:5.13.4",
83+
"org.junit.jupiter:junit-jupiter-api:5.14.0",
8484
"org.spockframework:spock-core:2.4-M6-groovy-4.0",
8585
"org.spockframework:spock-junit4:2.4-M6-groovy-4.0",
8686

docs/contributing/documenting-instrumentation.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ semantic_conventions:
8888
- HTTP_CLIENT_SPANS
8989
- DATABASE_CLIENT_SPANS
9090
- JVM_RUNTIME_METRICS
91+
features:
92+
- HTTP_ROUTE
93+
- CONTEXT_PROPAGATION
9194
disabled_by_default: true
9295
classification: library
9396
library_link: https://github.com/...
@@ -174,6 +177,20 @@ List of possible options:
174177
* [GENAI_CLIENT_SPANS](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/gen-ai/gen-ai-spans.md)
175178
* [GENAI_CLIENT_METRICS](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/gen-ai/gen-ai-metrics.md#generative-ai-client-metrics)
176179

180+
### Features (optional)
181+
182+
As a way to help further categorize instrumentations, you can add a `features` field with a list of
183+
the relevant functionality descriptions.
184+
185+
List of possible options:
186+
187+
* `HTTP_ROUTE`: Instrumentation that enriches HTTP spans with route information
188+
* `EXPERIMENTAL_ONLY`: Instrumentation that is experimental and may not be stable
189+
* `CONTEXT_PROPAGATION`: Instrumentation that provides context propagation capabilities
190+
* `AUTO_INSTRUMENTATION_SHIM`: Instrumentation that adapts or bridges instrumentation from upstream libraries or frameworks
191+
* `CONTROLLER_SPANS`: Instrumentation that generates controller-level spans
192+
* `VIEW_SPANS`: Instrumentation that generates view-level spans
193+
177194
### Library Link
178195

179196
For library instrumentations, include a `library_link` field with a URL to the library or framework's

docs/instrumentation-list.yaml

Lines changed: 83 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,25 @@ libraries:
2121
target_versions:
2222
javaagent:
2323
- io.activej:activej-http:[6.0,)
24+
configurations:
25+
- name: otel.instrumentation.http.known-methods
26+
description: |
27+
Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.
28+
type: list
29+
default: CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE
30+
- name: otel.instrumentation.http.server.capture-request-headers
31+
description: List of HTTP request headers to capture in HTTP server telemetry.
32+
type: list
33+
default: ''
34+
- name: otel.instrumentation.http.server.capture-response-headers
35+
description: List of HTTP response headers to capture in HTTP server telemetry.
36+
type: list
37+
default: ''
38+
- name: otel.instrumentation.http.server.emit-experimental-telemetry
39+
description: |
40+
Enable the capture of experimental HTTP server telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.server.request.size` and `http.server.response.size` metrics.
41+
type: boolean
42+
default: false
2443
telemetry:
2544
- when: default
2645
metrics:
@@ -70,6 +89,8 @@ libraries:
7089
description: This instrumentation provides context propagation for Akka actors,
7190
it does not emit any telemetry on its own.
7291
library_link: https://doc.akka.io/libraries/akka-core/current/typed/index.html
92+
features:
93+
- CONTEXT_PROPAGATION
7394
source_path: instrumentation/akka/akka-actor-2.3
7495
scope:
7596
name: io.opentelemetry.akka-actor-2.3
@@ -83,6 +104,8 @@ libraries:
83104
description: This instrumentation provides context propagation for the Akka Fork-Join
84105
Pool, it does not emit any telemetry on its own.
85106
library_link: https://doc.akka.io/libraries/akka-core/current/typed/index.html
107+
features:
108+
- CONTEXT_PROPAGATION
86109
source_path: instrumentation/akka/akka-actor-fork-join-2.5
87110
scope:
88111
name: io.opentelemetry.akka-actor-fork-join-2.5
@@ -101,6 +124,9 @@ libraries:
101124
- HTTP_SERVER_SPANS
102125
- HTTP_SERVER_METRICS
103126
library_link: https://doc.akka.io/docs/akka-http/current/index.html
127+
features:
128+
- HTTP_ROUTE
129+
- CONTEXT_PROPAGATION
104130
source_path: instrumentation/akka/akka-http-10.0
105131
scope:
106132
name: io.opentelemetry.akka-http-10.0
@@ -109,6 +135,47 @@ libraries:
109135
- com.typesafe.akka:akka-http_2.12:[10,)
110136
- com.typesafe.akka:akka-http_2.13:[10,)
111137
- com.typesafe.akka:akka-http_2.11:[10,)
138+
configurations:
139+
- name: otel.instrumentation.http.known-methods
140+
description: |
141+
Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.
142+
type: list
143+
default: CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE
144+
- name: otel.instrumentation.http.client.capture-request-headers
145+
description: List of HTTP request headers to capture in HTTP client telemetry.
146+
type: list
147+
default: ''
148+
- name: otel.instrumentation.http.client.capture-response-headers
149+
description: List of HTTP response headers to capture in HTTP client telemetry.
150+
type: list
151+
default: ''
152+
- name: otel.instrumentation.common.peer-service-mapping
153+
description: Used to specify a mapping from host names or IP addresses to peer
154+
services.
155+
type: map
156+
default: ''
157+
- name: otel.instrumentation.http.client.emit-experimental-telemetry
158+
description: |
159+
Enable the capture of experimental HTTP client telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.client.request.size` and `http.client.response.size` metrics.
160+
type: boolean
161+
default: false
162+
- name: otel.instrumentation.http.client.experimental.redact-query-parameters
163+
description: Redact sensitive URL parameters. See https://opentelemetry.io/docs/specs/semconv/http/http-spans.
164+
type: boolean
165+
default: true
166+
- name: otel.instrumentation.http.server.capture-request-headers
167+
description: List of HTTP request headers to capture in HTTP server telemetry.
168+
type: list
169+
default: ''
170+
- name: otel.instrumentation.http.server.capture-response-headers
171+
description: List of HTTP response headers to capture in HTTP server telemetry.
172+
type: list
173+
default: ''
174+
- name: otel.instrumentation.http.server.emit-experimental-telemetry
175+
description: |
176+
Enable the capture of experimental HTTP server telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.server.request.size` and `http.server.response.size` metrics.
177+
type: boolean
178+
default: false
112179
telemetry:
113180
- when: default
114181
metrics:
@@ -200,6 +267,12 @@ libraries:
200267
- com.alibaba:druid:(,)
201268
library:
202269
- com.alibaba:druid:1.0.0
270+
configurations:
271+
- name: otel.semconv-stability.opt-in
272+
description: |
273+
Opt-in to emit stable semantic conventions instead of the old experimental semantic conventions. Accepts a comma-separated list of semantic convention groups (e.g., `database`, `http`, `messaging`). Use `<group>/dup` to emit both old and new conventions simultaneously. Stable semantic conventions will become the default in version 3.0 of the agent.
274+
type: list
275+
default: ''
203276
telemetry:
204277
- when: default
205278
metrics:
@@ -299,6 +372,12 @@ libraries:
299372
- org.apache.commons:commons-dbcp2:[2,)
300373
library:
301374
- org.apache.commons:commons-dbcp2:2.0
375+
configurations:
376+
- name: otel.semconv-stability.opt-in
377+
description: |
378+
Opt-in to emit stable semantic conventions instead of the old experimental semantic conventions. Accepts a comma-separated list of semantic convention groups (e.g., `database`, `http`, `messaging`). Use `<group>/dup` to emit both old and new conventions simultaneously. Stable semantic conventions will become the default in version 3.0 of the agent.
379+
type: list
380+
default: ''
302381
telemetry:
303382
- when: default
304383
metrics:
@@ -368,13 +447,13 @@ libraries:
368447
type: STRING
369448
- name: apache-dubbo-2.7
370449
display_name: Apache Dubbo
371-
description: The Apache Dubbo instrumentation provides RPC client spans and RPC
372-
server spans for Apache Dubbo RPC calls. Each call produces a span named after
373-
the Dubbo method, enriched with standard RPC attributes (system, service, method),
374-
network attributes, and error details if an exception occurs.
450+
description: |
451+
The Apache Dubbo instrumentation provides RPC client spans and metrics, and RPC server spans and metrics for Apache Dubbo RPC calls.
375452
semantic_conventions:
376453
- RPC_CLIENT_SPANS
454+
- RPC_CLIENT_METRICS
377455
- RPC_SERVER_SPANS
456+
- RPC_SERVER_METRICS
378457
library_link: https://github.com/apache/dubbo/
379458
source_path: instrumentation/apache-dubbo-2.7
380459
scope:

examples/distro/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ subprojects {
6969

7070
testImplementation("org.mockito:mockito-core:5.20.0")
7171

72-
testImplementation(enforcedPlatform("org.junit:junit-bom:5.13.4"))
72+
testImplementation(enforcedPlatform("org.junit:junit-bom:5.14.0"))
7373
testImplementation("org.junit.jupiter:junit-jupiter-api")
7474
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
7575
testRuntimeOnly("org.junit.platform:junit-platform-launcher")

0 commit comments

Comments
 (0)