Skip to content

Commit 8cde0e2

Browse files
author
Abhilash Garapati
committed
Merge remote-tracking branch 'upstream/main'
2 parents 0210432 + ff9c026 commit 8cde0e2

File tree

33 files changed

+1230
-68
lines changed

33 files changed

+1230
-68
lines changed

.fossa.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,9 @@ targets:
157157
- type: gradle
158158
path: ./
159159
target: ':instrumentation:hystrix-1.4:javaagent'
160+
- type: gradle
161+
path: ./
162+
target: ':instrumentation:iceberg-1.8:library'
160163
- type: gradle
161164
path: ./
162165
target: ':instrumentation:influxdb-2.4:javaagent'

.github/scripts/gha-free-disk-space.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@
66
df -h
77
sudo rm -rf /usr/local/lib/android
88
sudo rm -rf /usr/share/dotnet
9+
sudo rm -rf /usr/local/julia*
10+
sudo rm -rf /usr/share/swift
911
df -h

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
## Unreleased
44

5+
### ⚠️ Breaking Changes
6+
7+
- Logback appender `captureArguments` option split into two options: `captureTemplate` and `captureArguments`
8+
([#15423](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/15423))
9+
10+
511
## Version 2.22.0 (2025-11-20)
612

713
### ⚠️ Breaking Changes

conventions/build.gradle.kts

Lines changed: 1 addition & 1 deletion
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.3.0")
6060
implementation("org.apache.httpcomponents:httpclient:4.5.14")
61-
implementation("com.gradle.develocity:com.gradle.develocity.gradle.plugin:4.2.2")
61+
implementation("com.gradle.develocity:com.gradle.develocity.gradle.plugin:4.3")
6262
implementation("org.owasp:dependency-check-gradle:12.1.9")
6363
implementation("ru.vyarus:gradle-animalsniffer-plugin:2.0.1")
6464
implementation("org.spdx:spdx-gradle-plugin:0.9.0")

docs/instrumentation-list.yaml

Lines changed: 99 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5190,6 +5190,95 @@ libraries:
51905190
type: STRING
51915191
- name: hystrix.group
51925192
type: STRING
5193+
iceberg:
5194+
- name: iceberg-1.8
5195+
display_name: Apache Iceberg
5196+
description: |
5197+
This instrumentation provides a standalone library integration that enables metrics for Apache Iceberg table scans.
5198+
library_link: https://iceberg.apache.org/
5199+
source_path: instrumentation/iceberg-1.8
5200+
minimum_java_version: 11
5201+
scope:
5202+
name: io.opentelemetry.iceberg-1.8
5203+
target_versions:
5204+
library:
5205+
- org.apache.iceberg:iceberg-core:1.8.1
5206+
telemetry:
5207+
- when: default
5208+
metrics:
5209+
- name: iceberg.scan.data_files.count
5210+
description: The number of data files.
5211+
type: LONG_SUM
5212+
unit: file
5213+
attributes:
5214+
- name: iceberg.scan.state
5215+
type: STRING
5216+
- name: iceberg.schema.id
5217+
type: LONG
5218+
- name: iceberg.table.name
5219+
type: STRING
5220+
- name: iceberg.scan.data_files.size
5221+
description: The total size of all scanned data files.
5222+
type: LONG_SUM
5223+
unit: By
5224+
attributes:
5225+
- name: iceberg.schema.id
5226+
type: LONG
5227+
- name: iceberg.table.name
5228+
type: STRING
5229+
- name: iceberg.scan.data_manifests.count
5230+
description: The number of data manifests.
5231+
type: LONG_SUM
5232+
unit: file
5233+
attributes:
5234+
- name: iceberg.scan.state
5235+
type: STRING
5236+
- name: iceberg.schema.id
5237+
type: LONG
5238+
- name: iceberg.table.name
5239+
type: STRING
5240+
- name: iceberg.scan.delete_files.count
5241+
description: The number of delete files.
5242+
type: LONG_SUM
5243+
unit: file
5244+
attributes:
5245+
- name: iceberg.delete_file.type
5246+
type: STRING
5247+
- name: iceberg.scan.state
5248+
type: STRING
5249+
- name: iceberg.schema.id
5250+
type: LONG
5251+
- name: iceberg.table.name
5252+
type: STRING
5253+
- name: iceberg.scan.delete_files.size
5254+
description: The total size of all scanned delete files.
5255+
type: LONG_SUM
5256+
unit: By
5257+
attributes:
5258+
- name: iceberg.schema.id
5259+
type: LONG
5260+
- name: iceberg.table.name
5261+
type: STRING
5262+
- name: iceberg.scan.delete_manifests.count
5263+
description: The number of delete manifests.
5264+
type: LONG_SUM
5265+
unit: file
5266+
attributes:
5267+
- name: iceberg.scan.state
5268+
type: STRING
5269+
- name: iceberg.schema.id
5270+
type: LONG
5271+
- name: iceberg.table.name
5272+
type: STRING
5273+
- name: iceberg.scan.planning.duration
5274+
description: The total duration needed to plan the scan.
5275+
type: HISTOGRAM
5276+
unit: s
5277+
attributes:
5278+
- name: iceberg.schema.id
5279+
type: LONG
5280+
- name: iceberg.table.name
5281+
type: STRING
51935282
influxdb:
51945283
- name: influxdb-2.4
51955284
display_name: InfluxDB Client
@@ -10429,13 +10518,22 @@ libraries:
1042910518
name: io.opentelemetry.spring-cloud-gateway-2.0
1043010519
target_versions:
1043110520
javaagent:
10432-
- org.springframework.cloud:spring-cloud-starter-gateway:[2.0.0.RELEASE,]
10521+
- org.springframework.cloud:spring-cloud-starter-gateway:[2.0.0.RELEASE,)
10522+
- org.springframework.cloud:spring-cloud-starter-gateway-server-webflux:[4.3.0,]
1043310523
configurations:
1043410524
- name: otel.instrumentation.spring-cloud-gateway.experimental-span-attributes
1043510525
description: |
1043610526
Enables experimental `spring-cloud-gateway.route` attributes (e.g., `spring-cloud-gateway.route.id`, `spring-cloud-gateway.route.uri`, etc.) on spans.
1043710527
type: boolean
1043810528
default: false
10529+
- name: spring-cloud-gateway-webmvc-4.3
10530+
source_path: instrumentation/spring/spring-cloud-gateway/spring-cloud-gateway-webmvc-4.3
10531+
minimum_java_version: 17
10532+
scope:
10533+
name: io.opentelemetry.spring-cloud-gateway-webmvc-4.3
10534+
target_versions:
10535+
javaagent:
10536+
- org.springframework.cloud:spring-cloud-starter-gateway-server-webmvc:[4.3.0,)
1043910537
- name: spring-core-2.0
1044010538
description: |
1044110539
This instrumentation ensures proper context propagation for asynchronous operations within Spring Core. It modifies how tasks are submitted and executed to ensure that spans created by other instrumentations are correctly linked across thread boundaries, rather than generating any new telemetry itself.

docs/supported-libraries.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ These are the supported libraries and frameworks:
3232
| [Apache ElasticJob](https://shardingsphere.apache.org/elasticjob/) | 3.0+ | N/A | none |
3333
| [Apache HttpAsyncClient](https://hc.apache.org/index.html) | 4.1+ | N/A | [HTTP Client Spans], [HTTP Client Metrics] |
3434
| [Apache HttpClient](https://hc.apache.org/index.html) | 2.0+ | [opentelemetry-apache-httpclient-4.3](../instrumentation/apache-httpclient/apache-httpclient-4.3/library),<br>[opentelemetry-apache-httpclient-5.2](../instrumentation/apache-httpclient/apache-httpclient-5.2/library) | [HTTP Client Spans], [HTTP Client Metrics] |
35+
| [Apache Iceberg](https://iceberg.apache.org/) | N/A | [opentelemetry-iceberg-1.8](../instrumentation/iceberg-1.8/library/) | none |
3536
| [Apache ShenYu](https://shenyu.apache.org/) | 2.4+ | N/A | Provides `http.route` [2] |
3637
| [Apache Kafka Connect API](https://kafka.apache.org/documentation/#connect) | 2.6+ | N/A | [Messaging Spans] |
3738
| [Apache Kafka Producer/Consumer API](https://kafka.apache.org/documentation/#producerapi) | 0.11+ | [opentelemetry-kafka-clients-2.6](../instrumentation/kafka/kafka-clients/kafka-clients-2.6/library) | [Messaging Spans] |

examples/distro/gradle/instrumentation.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ shadowJar {
3838

3939
mergeServiceFiles()
4040
// mergeServiceFiles requires that duplicate strategy is set to include
41-
filesMatching("inst/META-INF/services/**") {
41+
filesMatching("META-INF/services/**") {
4242
duplicatesStrategy = DuplicatesStrategy.INCLUDE
4343
}
4444

examples/extension/src/test/java/com/example/javaagent/smoketest/SpringBootIntegrationTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,5 +87,6 @@ private void testAndVerify() throws IOException, InterruptedException {
8787
Assertions.assertNotEquals(
8888
0, countResourcesByValue(traces, "telemetry.distro.version", currentAgentVersion));
8989
Assertions.assertNotEquals(0, countResourcesByValue(traces, "custom.resource", "demo"));
90+
Assertions.assertEquals(1, countSpansByAttributeValue(traces, "demo.custom", "demo-extension"));
9091
}
9192
}

gradle-plugins/src/main/kotlin/io.opentelemetry.instrumentation.muzzle-check.gradle.kts

Lines changed: 41 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -73,52 +73,54 @@ val shadowMuzzleBootstrap by tasks.registering(ShadowJar::class) {
7373

7474
// this is a copied from io.opentelemetry.instrumentation.javaagent-shadowing for now at least to
7575
// avoid publishing io.opentelemetry.instrumentation.javaagent-shadowing publicly
76-
tasks.withType<ShadowJar>().configureEach {
77-
mergeServiceFiles()
78-
// mergeServiceFiles requires that duplicate strategy is set to include
79-
filesMatching("META-INF/services/**") {
80-
duplicatesStrategy = DuplicatesStrategy.INCLUDE
81-
}
82-
// Merge any AWS SDK service files that may be present (too bad they didn't just use normal
83-
// service loader...)
84-
mergeServiceFiles("software/amazon/awssdk/global/handlers")
85-
// mergeServiceFiles requires that duplicate strategy is set to include
86-
filesMatching("software/amazon/awssdk/global/handlers/**") {
87-
duplicatesStrategy = DuplicatesStrategy.INCLUDE
88-
}
76+
listOf(shadowModule, shadowMuzzleTooling, shadowMuzzleBootstrap).forEach { task ->
77+
task.configure {
78+
mergeServiceFiles()
79+
// mergeServiceFiles requires that duplicate strategy is set to include
80+
filesMatching("META-INF/services/**") {
81+
duplicatesStrategy = DuplicatesStrategy.INCLUDE
82+
}
83+
// Merge any AWS SDK service files that may be present (too bad they didn't just use normal
84+
// service loader...)
85+
mergeServiceFiles("software/amazon/awssdk/global/handlers")
86+
// mergeServiceFiles requires that duplicate strategy is set to include
87+
filesMatching("software/amazon/awssdk/global/handlers/**") {
88+
duplicatesStrategy = DuplicatesStrategy.INCLUDE
89+
}
8990

90-
exclude("**/module-info.class")
91+
exclude("**/module-info.class")
9192

92-
// rewrite dependencies calling Logger.getLogger
93-
relocate("java.util.logging.Logger", "io.opentelemetry.javaagent.bootstrap.PatchLogger")
93+
// rewrite dependencies calling Logger.getLogger
94+
relocate("java.util.logging.Logger", "io.opentelemetry.javaagent.bootstrap.PatchLogger")
9495

95-
if (project.findProperty("disableShadowRelocate") != "true") {
96-
// prevents conflict with library instrumentation, since these classes live in the bootstrap class loader
97-
relocate("io.opentelemetry.instrumentation", "io.opentelemetry.javaagent.shaded.instrumentation") {
98-
// Exclude resource providers since they live in the agent class loader
99-
exclude("io.opentelemetry.instrumentation.resources.*")
100-
exclude("io.opentelemetry.instrumentation.spring.resources.*")
101-
}
96+
if (project.findProperty("disableShadowRelocate") != "true") {
97+
// prevents conflict with library instrumentation, since these classes live in the bootstrap class loader
98+
relocate("io.opentelemetry.instrumentation", "io.opentelemetry.javaagent.shaded.instrumentation") {
99+
// Exclude resource providers since they live in the agent class loader
100+
exclude("io.opentelemetry.instrumentation.resources.*")
101+
exclude("io.opentelemetry.instrumentation.spring.resources.*")
102+
}
102103

103-
// relocate(OpenTelemetry API) since these classes live in the bootstrap class loader
104-
relocate("io.opentelemetry.api", "io.opentelemetry.javaagent.shaded.io.opentelemetry.api")
105-
relocate("io.opentelemetry.semconv", "io.opentelemetry.javaagent.shaded.io.opentelemetry.semconv")
106-
relocate("io.opentelemetry.context", "io.opentelemetry.javaagent.shaded.io.opentelemetry.context")
107-
relocate("io.opentelemetry.common", "io.opentelemetry.javaagent.shaded.io.opentelemetry.common")
108-
}
104+
// relocate(OpenTelemetry API) since these classes live in the bootstrap class loader
105+
relocate("io.opentelemetry.api", "io.opentelemetry.javaagent.shaded.io.opentelemetry.api")
106+
relocate("io.opentelemetry.semconv", "io.opentelemetry.javaagent.shaded.io.opentelemetry.semconv")
107+
relocate("io.opentelemetry.context", "io.opentelemetry.javaagent.shaded.io.opentelemetry.context")
108+
relocate("io.opentelemetry.common", "io.opentelemetry.javaagent.shaded.io.opentelemetry.common")
109+
}
109110

110-
// relocate(the OpenTelemetry extensions that are used by instrumentation modules)
111-
// these extensions live in the AgentClassLoader, and are injected into the user's class loader
112-
// by the instrumentation modules that use them
113-
relocate("io.opentelemetry.contrib.awsxray", "io.opentelemetry.javaagent.shaded.io.opentelemetry.contrib.awsxray")
114-
relocate("io.opentelemetry.extension.kotlin", "io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.kotlin")
111+
// relocate(the OpenTelemetry extensions that are used by instrumentation modules)
112+
// these extensions live in the AgentClassLoader, and are injected into the user's class loader
113+
// by the instrumentation modules that use them
114+
relocate("io.opentelemetry.contrib.awsxray", "io.opentelemetry.javaagent.shaded.io.opentelemetry.contrib.awsxray")
115+
relocate("io.opentelemetry.extension.kotlin", "io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.kotlin")
115116

116-
// this is for instrumentation of opentelemetry-api and opentelemetry-instrumentation-api
117-
relocate("application.io.opentelemetry", "io.opentelemetry")
118-
relocate("application.io.opentelemetry.instrumentation.api", "io.opentelemetry.instrumentation.api")
117+
// this is for instrumentation of opentelemetry-api and opentelemetry-instrumentation-api
118+
relocate("application.io.opentelemetry", "io.opentelemetry")
119+
relocate("application.io.opentelemetry.instrumentation.api", "io.opentelemetry.instrumentation.api")
119120

120-
// this is for instrumentation on java.util.logging (since java.util.logging itself is shaded above)
121-
relocate("application.java.util.logging", "java.util.logging")
121+
// this is for instrumentation on java.util.logging (since java.util.logging itself is shaded above)
122+
relocate("application.java.util.logging", "java.util.logging")
123+
}
122124
}
123125

124126
val compileMuzzle by tasks.registering {

instrumentation-docs/instrumentations.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ readonly INSTRUMENTATIONS=(
106106
"http-url-connection:javaagent:test"
107107
"hystrix-1.4:javaagent:test"
108108
"hystrix-1.4:javaagent:testExperimental"
109+
"iceberg-1.8:library:test"
109110
"influxdb-2.4:javaagent:test"
110111
"influxdb-2.4:javaagent:testStableSemconv"
111112
"java-http-client:javaagent:test"

0 commit comments

Comments
 (0)