Compare commits

...

26 Commits

Author SHA1 Message Date
Carl 4237a26517
added new constructor and tests (#7514) 2025-07-28 19:32:25 -07:00
renovate[bot] 590f11213c
chore(deps): update weekly update (#7515)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-28 19:26:58 -07:00
Jay DeLuca ff4d32646a
Update okhttp dependency to okhttp-jvm (#7517) 2025-07-28 19:26:15 -07:00
renovate[bot] 17b4065d6c
fix(deps): update dependency io.grpc:grpc-bom to v1.74.0 (#7518)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-28 13:37:37 -07:00
renovate[bot] b79242d858
fix(deps): update dependency com.google.api.grpc:proto-google-common-protos to v2.59.2 (#7509)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-26 22:06:51 -07:00
renovate[bot] dfd35c7a8d
fix(deps): update junit-framework monorepo to v5.13.4 (#7507)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-26 22:06:29 -07:00
renovate[bot] c0855e867a
fix(deps): update spotless packages to v7.2.1 (#7505)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-26 22:05:59 -07:00
renovate[bot] 5764814b8e
fix(deps): update dependency io.opentelemetry.contrib:opentelemetry-aws-xray-propagator to v1.48.0-alpha (#7510)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-26 11:21:35 -07:00
renovate[bot] 42c4091802
fix(deps): update errorproneversion to v2.41.0 (#7512)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jason Plumb <jplumb@splunk.com>
2025-07-26 11:18:31 -07:00
Gregor Zeitlinger dc2874e2fa
fix typo (#7497) 2025-07-20 10:08:40 -07:00
renovate[bot] 352acfb24b
fix(deps): update dependency com.fasterxml.jackson:jackson-bom to v2.19.2 (#7504)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-18 17:44:36 -07:00
Gregor Zeitlinger 3e5368eba8
update kotlin (#7501)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-18 07:47:15 -07:00
Gregor Zeitlinger 80da2ab3d9
show the wrong file format (#7498) 2025-07-17 18:27:09 -07:00
renovate[bot] 29a7fe8f13
fix(deps): update dependency io.netty:netty-bom to v4.2.3.final (#7490)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-15 15:16:47 -07:00
renovate[bot] 887778fa0b
fix(deps): update junit-framework monorepo to v5.13.3 (#7494)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-15 15:15:08 -07:00
renovate[bot] 8e232157d1
chore(deps): update plugin com.gradle.develocity to v4.1 (#7492)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-15 12:23:37 -07:00
renovate[bot] b185cfb94f
fix(deps): update dependency com.gradle.develocity:com.gradle.develocity.gradle.plugin to v4.1 (#7493)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-15 12:23:10 -07:00
renovate[bot] 57580f56e5
fix(deps): update junit-framework monorepo to v5.13.2 (#7462)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jason Plumb <jplumb@splunk.com>
Co-authored-by: John Watson <jkwatson@gmail.com>
2025-07-15 10:38:14 -07:00
Lauri Tulmin 7781706de2
Rename variables (#7486) 2025-07-15 10:37:27 -07:00
renovate[bot] ce1e26f579
fix(deps): update dependency org.snakeyaml:snakeyaml-engine to v2.10 (#7487)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-14 09:04:30 -07:00
renovate[bot] 80094155e9
chore(deps): update python:3.13.5 docker digest to 28f60ab (#7485)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-13 19:12:22 -07:00
renovate[bot] 38207b740e
fix(deps): update prometheusserverversion to v1.3.10 (#7466)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: John Watson <jkwatson@gmail.com>
2025-07-12 18:02:46 -07:00
renovate[bot] c54a301e5e
fix(deps): update errorproneversion to v2.40.0 (#7484)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-12 15:48:41 -07:00
renovate[bot] 804d5f3a07
fix(deps): update errorproneversion to v2.39.0 (#7448)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: John Watson <jkwatson@gmail.com>
2025-07-12 12:40:01 -07:00
otelbot[bot] 40f71ed52a
Update apidiff baseline and documentation versions to released version 1.52.0 (#7483)
Co-authored-by: otelbot <197425009+otelbot@users.noreply.github.com>
Co-authored-by: Jack Berg <jberg@newrelic.com>
2025-07-11 17:11:22 -05:00
otelbot[bot] 95dc35b2dd
Update version to 1.53.0 (#7481)
Co-authored-by: otelbot <197425009+otelbot@users.noreply.github.com>
2025-07-11 15:40:05 -05:00
95 changed files with 437 additions and 184 deletions

View File

@ -171,7 +171,7 @@ jobs:
- 23
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: graalvm/setup-graalvm@e1df20a713a4cc6ab5b0eb03f0e0dcdc0199b805 # v1.3.4
- uses: graalvm/setup-graalvm@7f488cf82a3629ee755e4e97342c01d6bed318fa # v1.3.5
with:
java-version: ${{ matrix.test-graal-version }}
distribution: 'graalvm'

View File

@ -45,7 +45,7 @@ jobs:
uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
- name: Initialize CodeQL
uses: github/codeql-action/init@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
uses: github/codeql-action/init@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4
with:
languages: ${{ matrix.language }}
# using "latest" helps to keep up with the latest Kotlin support
@ -60,6 +60,6 @@ jobs:
run: ./gradlew assemble --no-build-cache --no-daemon
- name: Perform CodeQL analysis
uses: github/codeql-action/analyze@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
uses: github/codeql-action/analyze@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4
with:
category: "/language:${{matrix.language}}"

View File

@ -42,6 +42,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard (optional).
# Commenting out will disable upload of results to your repo's Code Scanning dashboard
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
uses: github/codeql-action/upload-sarif@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4
with:
sarif_file: results.sarif

View File

@ -2,6 +2,8 @@
## Unreleased
## Version 1.52.0 (2025-07-11)
### API
#### Common

View File

@ -57,8 +57,8 @@ A bill of materials (or BOM) helps sync dependency versions of related artifacts
| Component | Description | Artifact ID | Version | Javadoc |
|----------------------------------------------|----------------------------------------|---------------------------|-------------------------------------------------------------|---------|
| [Bill of Materials (BOM)](./bom) | Bill of materials for stable artifacts | `opentelemetry-bom` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | N/A |
| [Alpha Bill of Materials (BOM)](./bom-alpha) | Bill of materials for alpha artifacts | `opentelemetry-bom-alpha` | <!--VERSION_UNSTABLE-->1.51.0-alpha<!--/VERSION_UNSTABLE--> | N/A |
| [Bill of Materials (BOM)](./bom) | Bill of materials for stable artifacts | `opentelemetry-bom` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | N/A |
| [Alpha Bill of Materials (BOM)](./bom-alpha) | Bill of materials for alpha artifacts | `opentelemetry-bom-alpha` | <!--VERSION_UNSTABLE-->1.52.0-alpha<!--/VERSION_UNSTABLE--> | N/A |
</details>
<details open>
@ -68,10 +68,10 @@ The OpenTelemetry API for recording telemetry.
| Component | Description | Artifact ID | Version | Javadoc |
|-----------------------------------|--------------------------------------------------------------------------------------|-------------------------------|-------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [API](./api/all) | OpenTelemetry API, including metrics, traces, baggage, context | `opentelemetry-api` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-api.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-api) |
| [API Incubator](./api/incubator) | API incubator, including pass through propagator, and extended tracer, and Event API | `opentelemetry-api-incubator` | <!--VERSION_UNSTABLE-->1.51.0-alpha<!--/VERSION_UNSTABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-api-incubator.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-api-incubator) |
| [Context API](./context) | OpenTelemetry context API | `opentelemetry-context` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-context.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-context) |
| [Common](./common) | Common utility methods used across API components | `opentelemetry-common` | TODO: add after first publish | TODO: add link after first publish |
| [API](./api/all) | OpenTelemetry API, including metrics, traces, baggage, context | `opentelemetry-api` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-api.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-api) |
| [API Incubator](./api/incubator) | API incubator, including pass through propagator, and extended tracer, and Event API | `opentelemetry-api-incubator` | <!--VERSION_UNSTABLE-->1.52.0-alpha<!--/VERSION_UNSTABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-api-incubator.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-api-incubator) |
| [Context API](./context) | OpenTelemetry context API | `opentelemetry-context` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-context.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-context) |
| [Common](./common) | Common utility methods used across API components | `opentelemetry-common` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-common.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-common) |
</details>
<details>
@ -81,8 +81,8 @@ Extensions to the OpenTelemetry API.
| Component | Description | Artifact ID | Version | Javadoc |
|---------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------|-------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Kotlin Extension](./extensions/kotlin) | Context extension for coroutines | `opentelemetry-extension-kotlin` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-extension-kotlin.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-extension-kotlin) |
| [Trace Propagators Extension](./extensions/trace-propagators) | Trace propagators, including B3, Jaeger, OT Trace | `opentelemetry-extension-trace-propagators` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-extension-trace-propagators.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-extension-trace-propagators) |
| [Kotlin Extension](./extensions/kotlin) | Context extension for coroutines | `opentelemetry-extension-kotlin` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-extension-kotlin.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-extension-kotlin) |
| [Trace Propagators Extension](./extensions/trace-propagators) | Trace propagators, including B3, Jaeger, OT Trace | `opentelemetry-extension-trace-propagators` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-extension-trace-propagators.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-extension-trace-propagators) |
</details>
<details open>
@ -92,12 +92,12 @@ The OpenTelemetry SDK for managing telemetry producing by the API.
| Component | Description | Artifact ID | Version | Javadoc |
|------------------------------|--------------------------------------------------------|-----------------------------|---------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [SDK](./sdk/all) | OpenTelemetry SDK, including metrics, traces, and logs | `opentelemetry-sdk` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-sdk.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk) |
| [Metrics SDK](./sdk/metrics) | OpenTelemetry metrics SDK | `opentelemetry-sdk-metrics` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-sdk-metrics.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-metrics) |
| [Trace SDK](./sdk/trace) | OpenTelemetry trace SDK | `opentelemetry-sdk-trace` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-sdk-trace.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-trace) |
| [Log SDK](./sdk/logs) | OpenTelemetry log SDK | `opentelemetry-sdk-logs` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-sdk-logs.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-logs) |
| [SDK Common](./sdk/common) | Shared SDK components | `opentelemetry-sdk-common` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-sdk-common.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-common) |
| [SDK Testing](./sdk/testing) | Components for testing OpenTelemetry instrumentation | `opentelemetry-sdk-testing` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-sdk-testing.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-testing) |
| [SDK](./sdk/all) | OpenTelemetry SDK, including metrics, traces, and logs | `opentelemetry-sdk` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-sdk.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk) |
| [Metrics SDK](./sdk/metrics) | OpenTelemetry metrics SDK | `opentelemetry-sdk-metrics` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-sdk-metrics.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-metrics) |
| [Trace SDK](./sdk/trace) | OpenTelemetry trace SDK | `opentelemetry-sdk-trace` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-sdk-trace.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-trace) |
| [Log SDK](./sdk/logs) | OpenTelemetry log SDK | `opentelemetry-sdk-logs` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-sdk-logs.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-logs) |
| [SDK Common](./sdk/common) | Shared SDK components | `opentelemetry-sdk-common` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-sdk-common.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-common) |
| [SDK Testing](./sdk/testing) | Components for testing OpenTelemetry instrumentation | `opentelemetry-sdk-testing` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-sdk-testing.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-testing) |
</details>
<details>
@ -107,16 +107,16 @@ SDK exporters for shipping traces, metrics, and logs out of process.
| Component | Description | Artifact ID | Version | Javadoc |
|-----------------------------------------------------------------------|------------------------------------------------------------------------------|------------------------------------------------------|-------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [OTLP Exporters](./exporters/otlp/all) | OTLP gRPC & HTTP exporters, including traces, metrics, and logs | `opentelemetry-exporter-otlp` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-exporter-otlp.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-exporter-otlp) |
| [OTLP Logging Exporters](./exporters/logging-otlp) | Logging exporters in OTLP JSON encoding, including traces, metrics, and logs | `opentelemetry-exporter-logging-otlp` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-exporter-logging-otlp.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-exporter-logging-otlp) |
| [OTLP Common](./exporters/otlp/common) | Shared OTLP components (internal) | `opentelemetry-exporter-otlp-common` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-exporter-otlp-common.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-exporter-otlp-common) |
| [Logging Exporter](./exporters/logging) | Logging exporters, including metrics, traces, and logs | `opentelemetry-exporter-logging` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-exporter-logging.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-exporter-logging) |
| [Zipkin Exporter](./exporters/zipkin) | Zipkin trace exporter | `opentelemetry-exporter-zipkin` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-exporter-zipkin.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-exporter-zipkin) |
| [Prometheus Exporter](./exporters/prometheus) | Prometheus metric exporter | `opentelemetry-exporter-prometheus` | <!--VERSION_UNSTABLE-->1.51.0-alpha<!--/VERSION_UNSTABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-exporter-prometheus.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-exporter-prometheus) |
| [Exporter Common](./exporters/common) | Shared exporter components (internal) | `opentelemetry-exporter-common` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-exporter-common.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-exporter-common) |
| [OkHttp Sender](./exporters/sender/okhttp) | OkHttp implementation of HttpSender (internal) | `opentelemetry-exporter-sender-okhttp` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-exporter-sender-okhttp.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-exporter-sender-okhttp) |
| [JDK Sender](./exporters/sender/jdk) | Java 11+ native HttpClient implementation of HttpSender (internal) | `opentelemetry-exporter-sender-jdk` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-exporter-sender-jdk.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-exporter-sender-jdk) | |
| [gRPC ManagedChannel Sender](./exporters/sender/grpc-managed-channel) | gRPC ManagedChannel implementation of GrpcSender (internal) | `opentelemetry-exporter-sender-grpc-managed-channel` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-exporter-sender-grpc-managed-channel.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-exporter-sender-grpc-managed-channel) | |
| [OTLP Exporters](./exporters/otlp/all) | OTLP gRPC & HTTP exporters, including traces, metrics, and logs | `opentelemetry-exporter-otlp` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-exporter-otlp.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-exporter-otlp) |
| [OTLP Logging Exporters](./exporters/logging-otlp) | Logging exporters in OTLP JSON encoding, including traces, metrics, and logs | `opentelemetry-exporter-logging-otlp` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-exporter-logging-otlp.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-exporter-logging-otlp) |
| [OTLP Common](./exporters/otlp/common) | Shared OTLP components (internal) | `opentelemetry-exporter-otlp-common` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-exporter-otlp-common.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-exporter-otlp-common) |
| [Logging Exporter](./exporters/logging) | Logging exporters, including metrics, traces, and logs | `opentelemetry-exporter-logging` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-exporter-logging.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-exporter-logging) |
| [Zipkin Exporter](./exporters/zipkin) | Zipkin trace exporter | `opentelemetry-exporter-zipkin` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-exporter-zipkin.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-exporter-zipkin) |
| [Prometheus Exporter](./exporters/prometheus) | Prometheus metric exporter | `opentelemetry-exporter-prometheus` | <!--VERSION_UNSTABLE-->1.52.0-alpha<!--/VERSION_UNSTABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-exporter-prometheus.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-exporter-prometheus) |
| [Exporter Common](./exporters/common) | Shared exporter components (internal) | `opentelemetry-exporter-common` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-exporter-common.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-exporter-common) |
| [OkHttp Sender](./exporters/sender/okhttp) | OkHttp implementation of HttpSender (internal) | `opentelemetry-exporter-sender-okhttp` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-exporter-sender-okhttp.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-exporter-sender-okhttp) |
| [JDK Sender](./exporters/sender/jdk) | Java 11+ native HttpClient implementation of HttpSender (internal) | `opentelemetry-exporter-sender-jdk` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-exporter-sender-jdk.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-exporter-sender-jdk) | |
| [gRPC ManagedChannel Sender](./exporters/sender/grpc-managed-channel) | gRPC ManagedChannel implementation of GrpcSender (internal) | `opentelemetry-exporter-sender-grpc-managed-channel` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-exporter-sender-grpc-managed-channel.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-exporter-sender-grpc-managed-channel) | |
</details>
<details>
@ -126,10 +126,10 @@ Extensions to the OpenTelemetry SDK.
| Component | Description | Artifact ID | Version | Javadoc |
|-------------------------------------------------------------------------------|------------------------------------------------------------------------------------|-----------------------------------------------------|-------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [SDK Autoconfigure](./sdk-extensions/autoconfigure) | Autoconfigure OpenTelemetry SDK from env vars, system properties, and SPI | `opentelemetry-sdk-extension-autoconfigure` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-sdk-extension-autoconfigure.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-extension-autoconfigure) |
| [SDK Autoconfigure SPI](./sdk-extensions/autoconfigure-spi) | Service Provider Interface (SPI) definitions for autoconfigure | `opentelemetry-sdk-extension-autoconfigure-spi` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-sdk-extension-autoconfigure-spi.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-extension-autoconfigure-spi) |
| [SDK Jaeger Remote Sampler Extension](./sdk-extensions/jaeger-remote-sampler) | Sampler which obtains sampling configuration from remote Jaeger server | `opentelemetry-sdk-extension-jaeger-remote-sampler` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-sdk-extension-jaeger-remote-sampler.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-extension-jaeger-remote-sampler) |
| [SDK Incubator](./sdk-extensions/incubator) | SDK incubator, including YAML based view configuration, LeakDetectingSpanProcessor | `opentelemetry-sdk-extension-incubator` | <!--VERSION_UNSTABLE-->1.51.0-alpha<!--/VERSION_UNSTABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-sdk-extension-incubator.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-extension-incubator) |
| [SDK Autoconfigure](./sdk-extensions/autoconfigure) | Autoconfigure OpenTelemetry SDK from env vars, system properties, and SPI | `opentelemetry-sdk-extension-autoconfigure` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-sdk-extension-autoconfigure.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-extension-autoconfigure) |
| [SDK Autoconfigure SPI](./sdk-extensions/autoconfigure-spi) | Service Provider Interface (SPI) definitions for autoconfigure | `opentelemetry-sdk-extension-autoconfigure-spi` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-sdk-extension-autoconfigure-spi.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-extension-autoconfigure-spi) |
| [SDK Jaeger Remote Sampler Extension](./sdk-extensions/jaeger-remote-sampler) | Sampler which obtains sampling configuration from remote Jaeger server | `opentelemetry-sdk-extension-jaeger-remote-sampler` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-sdk-extension-jaeger-remote-sampler.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-extension-jaeger-remote-sampler) |
| [SDK Incubator](./sdk-extensions/incubator) | SDK incubator, including YAML based view configuration, LeakDetectingSpanProcessor | `opentelemetry-sdk-extension-incubator` | <!--VERSION_UNSTABLE-->1.52.0-alpha<!--/VERSION_UNSTABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-sdk-extension-incubator.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-extension-incubator) |
</details>
<details>
@ -139,8 +139,8 @@ Shims for bridging data from one observability library to another.
| Component | Description | Artifact ID | Version | Javadoc |
|----------------------------------------|--------------------------------------------------------------|----------------------------------|-------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [OpenCensus Shim](./opencensus-shim) | Bridge opencensus metrics into the OpenTelemetry metrics SDK | `opentelemetry-opencensus-shim` | <!--VERSION_UNSTABLE-->1.51.0-alpha<!--/VERSION_UNSTABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-opencensus-shim.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-opencensus-shim) |
| [OpenTracing Shim](./opentracing-shim) | Bridge opentracing spans into the OpenTelemetry trace API | `opentelemetry-opentracing-shim` | <!--VERSION_STABLE-->1.51.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-opentracing-shim.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-opentracing-shim) |
| [OpenCensus Shim](./opencensus-shim) | Bridge opencensus metrics into the OpenTelemetry metrics SDK | `opentelemetry-opencensus-shim` | <!--VERSION_UNSTABLE-->1.52.0-alpha<!--/VERSION_UNSTABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-opencensus-shim.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-opencensus-shim) |
| [OpenTracing Shim](./opentracing-shim) | Bridge opentracing spans into the OpenTelemetry trace API | `opentelemetry-opentracing-shim` | <!--VERSION_STABLE-->1.52.0<!--/VERSION_STABLE--> | [![Javadocs](https://www.javadoc.io/badge/io.opentelemetry/opentelemetry-opentracing-shim.svg)](https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-opentracing-shim) |
</details>
## Dependencies
@ -181,7 +181,7 @@ repositories {
}
dependencies {
implementation platform("io.opentelemetry:opentelemetry-bom:1.52.0-SNAPSHOT")
implementation platform("io.opentelemetry:opentelemetry-bom:1.53.0-SNAPSHOT")
implementation('io.opentelemetry:opentelemetry-api')
}
```
@ -203,7 +203,7 @@ dependencies {
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-bom</artifactId>
<version>1.52.0-SNAPSHOT</version>
<version>1.53.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>

View File

@ -102,7 +102,7 @@ public class InstrumentationConfigUtil {
* @throws DeclarativeConfigException if an unexpected type is encountered accessing the property
*/
@Nullable
public static List<String> httpSeverResponseCapturedHeaders(ConfigProvider configProvider) {
public static List<String> httpServerResponseCapturedHeaders(ConfigProvider configProvider) {
return getOrNull(
configProvider,
config -> config.getScalarList("response_captured_headers", String.class),

View File

@ -128,16 +128,16 @@ class InstrumentationConfigUtilTest {
@Test
void httpServerResponseCapturedHeaders() {
assertThat(
InstrumentationConfigUtil.httpSeverResponseCapturedHeaders(kitchenSinkConfigProvider))
InstrumentationConfigUtil.httpServerResponseCapturedHeaders(kitchenSinkConfigProvider))
.isEqualTo(Arrays.asList("server-response-header1", "server-response-header2"));
assertThat(
InstrumentationConfigUtil.httpSeverResponseCapturedHeaders(
InstrumentationConfigUtil.httpServerResponseCapturedHeaders(
emptyInstrumentationConfigProvider))
.isNull();
assertThat(
InstrumentationConfigUtil.httpSeverResponseCapturedHeaders(emptyGeneralConfigProvider))
InstrumentationConfigUtil.httpServerResponseCapturedHeaders(emptyGeneralConfigProvider))
.isNull();
assertThat(InstrumentationConfigUtil.httpSeverResponseCapturedHeaders(emptyHttpConfigProvider))
assertThat(InstrumentationConfigUtil.httpServerResponseCapturedHeaders(emptyHttpConfigProvider))
.isNull();
}

View File

@ -25,7 +25,7 @@ import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
import org.junit.jupiter.api.Test;
/** Unit tests for No-op {@link Meter}. */
@SuppressLogger()
@SuppressLogger
public abstract class AbstractDefaultMeterTest {
private final Meter meter = getMeter();

View File

@ -2,7 +2,7 @@ plugins {
`kotlin-dsl`
// When updating, update below in dependencies too
id("com.diffplug.spotless") version "7.1.0"
id("com.diffplug.spotless") version "7.2.1"
}
if (!hasLauncherForJavaVersion(17)) {
@ -53,8 +53,8 @@ dependencies {
implementation(enforcedPlatform("com.squareup.wire:wire-bom:5.3.5"))
implementation("com.google.auto.value:auto-value-annotations:1.11.0")
// When updating, update above in plugins too
implementation("com.diffplug.spotless:spotless-plugin-gradle:7.1.0")
implementation("com.gradle.develocity:com.gradle.develocity.gradle.plugin:4.0.2")
implementation("com.diffplug.spotless:spotless-plugin-gradle:7.2.1")
implementation("com.gradle.develocity:com.gradle.develocity.gradle.plugin:4.1")
implementation("com.squareup:javapoet:1.13.0")
implementation("com.squareup.wire:wire-compiler")
implementation("com.squareup.wire:wire-gradle-plugin")
@ -64,7 +64,7 @@ dependencies {
implementation("me.champeau.jmh:jmh-gradle-plugin:0.7.3")
implementation("net.ltgt.gradle:gradle-errorprone-plugin:4.3.0")
implementation("net.ltgt.gradle:gradle-nullaway-plugin:2.2.0")
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:2.1.21")
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:2.2.0")
implementation("org.owasp:dependency-check-gradle:12.1.3")
implementation("ru.vyarus:gradle-animalsniffer-plugin:2.0.1")
}

View File

@ -142,6 +142,7 @@ if (!project.hasProperty("otel.release") && !project.name.startsWith("bom")) {
// Temporarily suppress warnings from public generated classes from :sdk-extensions:jaeger-remote-sampler
"io.opentelemetry.sdk.extension.trace.jaeger.proto.api_v2"
)
annotationExcludes.add("@kotlin.Metadata")
val baseVersionString = if (apiBaseVersion == null) "latest" else baselineVersion
txtOutputFile.set(
apiNewVersion?.let { file("$rootDir/docs/apidiffs/${apiNewVersion}_vs_$baselineVersion/${base.archivesName.get()}.txt") }

View File

@ -7,37 +7,39 @@ data class DependencySet(val group: String, val version: String, val modules: Li
val dependencyVersions = hashMapOf<String, String>()
rootProject.extra["versions"] = dependencyVersions
val autoValueVersion = "1.11.0"
val errorProneVersion = "2.41.0"
val jmhVersion = "1.37"
// Mockito 5.x.x requires Java 11 https://github.com/mockito/mockito/releases/tag/v5.0.0
val mockitoVersion = "4.11.0"
val slf4jVersion = "2.0.17"
val opencensusVersion = "0.31.1"
val prometheusServerVersion = "1.3.10"
val armeriaVersion = "1.32.5"
val junitVersion = "5.13.4"
val okhttpVersion = "5.1.0"
val DEPENDENCY_BOMS = listOf(
// for some reason boms show up as runtime dependencies in license and vulnerability scans
// even if they are only used by test dependencies, so not using junit bom here
// (which is EPL licensed) or armeria bom (which is Apache licensed but is getting flagged
// by FOSSA for containing EPL-licensed)
"com.fasterxml.jackson:jackson-bom:2.19.1",
"com.fasterxml.jackson:jackson-bom:2.19.2",
"com.google.guava:guava-bom:33.4.8-jre",
"com.google.protobuf:protobuf-bom:4.31.1",
"com.squareup.okhttp3:okhttp-bom:5.1.0",
"com.squareup.okhttp3:okhttp-bom:$okhttpVersion",
"com.squareup.okio:okio-bom:3.15.0", // applies to transitive dependencies of okhttp
"io.grpc:grpc-bom:1.73.0",
"io.netty:netty-bom:4.2.2.Final",
"io.grpc:grpc-bom:1.74.0",
"io.netty:netty-bom:4.2.3.Final",
"io.zipkin.brave:brave-bom:6.3.0",
"io.zipkin.reporter2:zipkin-reporter-bom:3.5.1",
"org.assertj:assertj-bom:3.27.3",
"org.testcontainers:testcontainers-bom:1.21.3",
"org.snakeyaml:snakeyaml-engine:2.9"
"org.snakeyaml:snakeyaml-engine:2.10"
)
val autoValueVersion = "1.11.0"
val errorProneVersion = "2.38.0"
val jmhVersion = "1.37"
// Mockito 5.x.x requires Java 11 https://github.com/mockito/mockito/releases/tag/v5.0.0
val mockitoVersion = "4.11.0"
val slf4jVersion = "2.0.17"
val opencensusVersion = "0.31.1"
val prometheusServerVersion = "1.3.8"
val armeriaVersion = "1.32.5"
val junitVersion = "5.12.2"
val DEPENDENCIES = listOf(
"org.junit.jupiter:junit-jupiter-api:${junitVersion}",
"org.junit.jupiter:junit-jupiter-params:${junitVersion}",
@ -68,17 +70,18 @@ val DEPENDENCIES = listOf(
"io.prometheus:prometheus-metrics-exposition-formats-no-protobuf:${prometheusServerVersion}",
"javax.annotation:javax.annotation-api:1.3.2",
"com.github.stefanbirkner:system-rules:1.19.0",
"com.google.api.grpc:proto-google-common-protos:2.59.1",
"com.google.api.grpc:proto-google-common-protos:2.59.2",
"com.google.code.findbugs:jsr305:3.0.2",
"com.google.guava:guava-beta-checker:1.0",
"com.sun.net.httpserver:http:20070405",
"com.squareup.okhttp3:okhttp-jvm:$okhttpVersion",
"com.tngtech.archunit:archunit-junit5:1.4.1",
"com.uber.nullaway:nullaway:0.12.7",
"edu.berkeley.cs.jqf:jqf-fuzz:1.7", // jqf-fuzz version 1.8+ requires Java 11+
"eu.rekawek.toxiproxy:toxiproxy-java:2.1.7",
"io.github.netmikey.logunit:logunit-jul:2.0.0",
"io.jaegertracing:jaeger-client:1.8.1",
"io.opentelemetry.contrib:opentelemetry-aws-xray-propagator:1.47.0-alpha",
"io.opentelemetry.contrib:opentelemetry-aws-xray-propagator:1.48.0-alpha",
"io.opentelemetry.semconv:opentelemetry-semconv-incubating:1.34.0-alpha",
"io.opentelemetry.proto:opentelemetry-proto:1.7.0-alpha",
"io.opentracing:opentracing-api:0.33.0",

View File

@ -0,0 +1,4 @@
Comparing source compatibility of opentelemetry-api-1.52.0.jar against opentelemetry-api-1.51.0.jar
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.api.GlobalOpenTelemetry (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW METHOD: PUBLIC(+) STATIC(+) void set(java.util.function.Supplier<io.opentelemetry.api.OpenTelemetry>)

View File

@ -0,0 +1,7 @@
Comparing source compatibility of opentelemetry-common-1.52.0.jar against
+++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.opentelemetry.common.ComponentLoader (not serializable)
+++ CLASS FILE FORMAT VERSION: 52.0 <- n.a.
+++ NEW SUPERCLASS: java.lang.Object
+++ NEW METHOD: PUBLIC(+) STATIC(+) io.opentelemetry.common.ComponentLoader forClassLoader(java.lang.ClassLoader)
+++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.lang.Iterable<T> load(java.lang.Class<T>)
GENERIC TEMPLATES: +++ T:java.lang.Object

View File

@ -0,0 +1,2 @@
Comparing source compatibility of opentelemetry-context-1.52.0.jar against opentelemetry-context-1.51.0.jar
No changes.

View File

@ -0,0 +1,2 @@
Comparing source compatibility of opentelemetry-exporter-common-1.52.0.jar against opentelemetry-exporter-common-1.51.0.jar
No changes.

View File

@ -0,0 +1,2 @@
Comparing source compatibility of opentelemetry-exporter-logging-otlp-1.52.0.jar against opentelemetry-exporter-logging-otlp-1.51.0.jar
No changes.

View File

@ -0,0 +1,2 @@
Comparing source compatibility of opentelemetry-exporter-logging-1.52.0.jar against opentelemetry-exporter-logging-1.51.0.jar
No changes.

View File

@ -0,0 +1,2 @@
Comparing source compatibility of opentelemetry-exporter-otlp-common-1.52.0.jar against opentelemetry-exporter-otlp-common-1.51.0.jar
No changes.

View File

@ -0,0 +1,19 @@
Comparing source compatibility of opentelemetry-exporter-otlp-1.52.0.jar against opentelemetry-exporter-otlp-1.51.0.jar
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporterBuilder (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporterBuilder setComponentLoader(io.opentelemetry.common.ComponentLoader)
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.http.metrics.OtlpHttpMetricExporterBuilder (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.http.metrics.OtlpHttpMetricExporterBuilder setComponentLoader(io.opentelemetry.common.ComponentLoader)
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporterBuilder (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporterBuilder setComponentLoader(io.opentelemetry.common.ComponentLoader)
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporterBuilder (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporterBuilder setComponentLoader(io.opentelemetry.common.ComponentLoader)
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporterBuilder (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporterBuilder setComponentLoader(io.opentelemetry.common.ComponentLoader)
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporterBuilder (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporterBuilder setComponentLoader(io.opentelemetry.common.ComponentLoader)

View File

@ -0,0 +1,2 @@
Comparing source compatibility of opentelemetry-exporter-sender-grpc-managed-channel-1.52.0.jar against opentelemetry-exporter-sender-grpc-managed-channel-1.51.0.jar
No changes.

View File

@ -0,0 +1,2 @@
Comparing source compatibility of opentelemetry-exporter-sender-jdk-1.52.0.jar against opentelemetry-exporter-sender-jdk-1.51.0.jar
No changes.

View File

@ -0,0 +1,2 @@
Comparing source compatibility of opentelemetry-exporter-sender-okhttp-1.52.0.jar against opentelemetry-exporter-sender-okhttp-1.51.0.jar
No changes.

View File

@ -0,0 +1,2 @@
Comparing source compatibility of opentelemetry-exporter-zipkin-1.52.0.jar against opentelemetry-exporter-zipkin-1.51.0.jar
No changes.

View File

@ -0,0 +1,2 @@
Comparing source compatibility of opentelemetry-extension-kotlin-1.52.0.jar against opentelemetry-extension-kotlin-1.51.0.jar
No changes.

View File

@ -0,0 +1,2 @@
Comparing source compatibility of opentelemetry-extension-trace-propagators-1.52.0.jar against opentelemetry-extension-trace-propagators-1.51.0.jar
No changes.

View File

@ -0,0 +1,2 @@
Comparing source compatibility of opentelemetry-opentracing-shim-1.52.0.jar against opentelemetry-opentracing-shim-1.51.0.jar
No changes.

View File

@ -0,0 +1,2 @@
Comparing source compatibility of opentelemetry-sdk-common-1.52.0.jar against opentelemetry-sdk-common-1.51.0.jar
No changes.

View File

@ -0,0 +1,4 @@
Comparing source compatibility of opentelemetry-sdk-extension-autoconfigure-spi-1.52.0.jar against opentelemetry-sdk-extension-autoconfigure-spi-1.51.0.jar
*** MODIFIED INTERFACE: PUBLIC ABSTRACT io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.common.ComponentLoader getComponentLoader()

View File

@ -0,0 +1,4 @@
Comparing source compatibility of opentelemetry-sdk-extension-autoconfigure-1.52.0.jar against opentelemetry-sdk-extension-autoconfigure-1.51.0.jar
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdkBuilder (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdkBuilder setComponentLoader(io.opentelemetry.common.ComponentLoader)

View File

@ -0,0 +1,2 @@
Comparing source compatibility of opentelemetry-sdk-extension-jaeger-remote-sampler-1.52.0.jar against opentelemetry-sdk-extension-jaeger-remote-sampler-1.51.0.jar
No changes.

View File

@ -0,0 +1,2 @@
Comparing source compatibility of opentelemetry-sdk-logs-1.52.0.jar against opentelemetry-sdk-logs-1.51.0.jar
No changes.

View File

@ -0,0 +1,2 @@
Comparing source compatibility of opentelemetry-sdk-metrics-1.52.0.jar against opentelemetry-sdk-metrics-1.51.0.jar
No changes.

View File

@ -0,0 +1,2 @@
Comparing source compatibility of opentelemetry-sdk-testing-1.52.0.jar against opentelemetry-sdk-testing-1.51.0.jar
No changes.

View File

@ -0,0 +1,2 @@
Comparing source compatibility of opentelemetry-sdk-trace-1.52.0.jar against opentelemetry-sdk-trace-1.51.0.jar
No changes.

View File

@ -0,0 +1,2 @@
Comparing source compatibility of opentelemetry-sdk-1.52.0.jar against opentelemetry-sdk-1.51.0.jar
No changes.

View File

@ -1,4 +1,2 @@
Comparing source compatibility of opentelemetry-api-1.52.0-SNAPSHOT.jar against opentelemetry-api-1.51.0.jar
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.api.GlobalOpenTelemetry (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW METHOD: PUBLIC(+) STATIC(+) void set(java.util.function.Supplier<io.opentelemetry.api.OpenTelemetry>)
Comparing source compatibility of opentelemetry-api-1.53.0-SNAPSHOT.jar against opentelemetry-api-1.52.0.jar
No changes.

View File

@ -1,7 +1,2 @@
Comparing source compatibility of opentelemetry-common-1.52.0-SNAPSHOT.jar against
+++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.opentelemetry.common.ComponentLoader (not serializable)
+++ CLASS FILE FORMAT VERSION: 52.0 <- n.a.
+++ NEW SUPERCLASS: java.lang.Object
+++ NEW METHOD: PUBLIC(+) STATIC(+) io.opentelemetry.common.ComponentLoader forClassLoader(java.lang.ClassLoader)
+++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.lang.Iterable<T> load(java.lang.Class<T>)
GENERIC TEMPLATES: +++ T:java.lang.Object
Comparing source compatibility of opentelemetry-common-1.53.0-SNAPSHOT.jar against opentelemetry-common-1.52.0.jar
No changes.

View File

@ -1,2 +1,2 @@
Comparing source compatibility of opentelemetry-context-1.52.0-SNAPSHOT.jar against opentelemetry-context-1.51.0.jar
Comparing source compatibility of opentelemetry-context-1.53.0-SNAPSHOT.jar against opentelemetry-context-1.52.0.jar
No changes.

View File

@ -1,2 +1,2 @@
Comparing source compatibility of opentelemetry-exporter-common-1.52.0-SNAPSHOT.jar against opentelemetry-exporter-common-1.51.0.jar
Comparing source compatibility of opentelemetry-exporter-common-1.53.0-SNAPSHOT.jar against opentelemetry-exporter-common-1.52.0.jar
No changes.

View File

@ -1,2 +1,2 @@
Comparing source compatibility of opentelemetry-exporter-logging-otlp-1.52.0-SNAPSHOT.jar against opentelemetry-exporter-logging-otlp-1.51.0.jar
Comparing source compatibility of opentelemetry-exporter-logging-otlp-1.53.0-SNAPSHOT.jar against opentelemetry-exporter-logging-otlp-1.52.0.jar
No changes.

View File

@ -1,2 +1,2 @@
Comparing source compatibility of opentelemetry-exporter-logging-1.52.0-SNAPSHOT.jar against opentelemetry-exporter-logging-1.51.0.jar
Comparing source compatibility of opentelemetry-exporter-logging-1.53.0-SNAPSHOT.jar against opentelemetry-exporter-logging-1.52.0.jar
No changes.

View File

@ -1,2 +1,2 @@
Comparing source compatibility of opentelemetry-exporter-otlp-common-1.52.0-SNAPSHOT.jar against opentelemetry-exporter-otlp-common-1.51.0.jar
Comparing source compatibility of opentelemetry-exporter-otlp-common-1.53.0-SNAPSHOT.jar against opentelemetry-exporter-otlp-common-1.52.0.jar
No changes.

View File

@ -1,19 +1,2 @@
Comparing source compatibility of opentelemetry-exporter-otlp-1.52.0-SNAPSHOT.jar against opentelemetry-exporter-otlp-1.51.0.jar
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporterBuilder (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporterBuilder setComponentLoader(io.opentelemetry.common.ComponentLoader)
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.http.metrics.OtlpHttpMetricExporterBuilder (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.http.metrics.OtlpHttpMetricExporterBuilder setComponentLoader(io.opentelemetry.common.ComponentLoader)
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporterBuilder (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporterBuilder setComponentLoader(io.opentelemetry.common.ComponentLoader)
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporterBuilder (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporterBuilder setComponentLoader(io.opentelemetry.common.ComponentLoader)
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporterBuilder (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporterBuilder setComponentLoader(io.opentelemetry.common.ComponentLoader)
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporterBuilder (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporterBuilder setComponentLoader(io.opentelemetry.common.ComponentLoader)
Comparing source compatibility of opentelemetry-exporter-otlp-1.53.0-SNAPSHOT.jar against opentelemetry-exporter-otlp-1.52.0.jar
No changes.

View File

@ -1,2 +1,2 @@
Comparing source compatibility of opentelemetry-exporter-sender-grpc-managed-channel-1.52.0-SNAPSHOT.jar against opentelemetry-exporter-sender-grpc-managed-channel-1.51.0.jar
Comparing source compatibility of opentelemetry-exporter-sender-grpc-managed-channel-1.53.0-SNAPSHOT.jar against opentelemetry-exporter-sender-grpc-managed-channel-1.52.0.jar
No changes.

View File

@ -1,2 +1,2 @@
Comparing source compatibility of opentelemetry-exporter-sender-jdk-1.52.0-SNAPSHOT.jar against opentelemetry-exporter-sender-jdk-1.51.0.jar
Comparing source compatibility of opentelemetry-exporter-sender-jdk-1.53.0-SNAPSHOT.jar against opentelemetry-exporter-sender-jdk-1.52.0.jar
No changes.

View File

@ -1,2 +1,2 @@
Comparing source compatibility of opentelemetry-exporter-sender-okhttp-1.52.0-SNAPSHOT.jar against opentelemetry-exporter-sender-okhttp-1.51.0.jar
Comparing source compatibility of opentelemetry-exporter-sender-okhttp-1.53.0-SNAPSHOT.jar against opentelemetry-exporter-sender-okhttp-1.52.0.jar
No changes.

View File

@ -1,2 +1,2 @@
Comparing source compatibility of opentelemetry-exporter-zipkin-1.52.0-SNAPSHOT.jar against opentelemetry-exporter-zipkin-1.51.0.jar
Comparing source compatibility of opentelemetry-exporter-zipkin-1.53.0-SNAPSHOT.jar against opentelemetry-exporter-zipkin-1.52.0.jar
No changes.

View File

@ -1,2 +1,2 @@
Comparing source compatibility of opentelemetry-extension-kotlin-1.52.0-SNAPSHOT.jar against opentelemetry-extension-kotlin-1.51.0.jar
Comparing source compatibility of opentelemetry-extension-kotlin-1.53.0-SNAPSHOT.jar against opentelemetry-extension-kotlin-1.52.0.jar
No changes.

View File

@ -1,2 +1,2 @@
Comparing source compatibility of opentelemetry-extension-trace-propagators-1.52.0-SNAPSHOT.jar against opentelemetry-extension-trace-propagators-1.51.0.jar
Comparing source compatibility of opentelemetry-extension-trace-propagators-1.53.0-SNAPSHOT.jar against opentelemetry-extension-trace-propagators-1.52.0.jar
No changes.

View File

@ -1,2 +1,2 @@
Comparing source compatibility of opentelemetry-opentracing-shim-1.52.0-SNAPSHOT.jar against opentelemetry-opentracing-shim-1.51.0.jar
Comparing source compatibility of opentelemetry-opentracing-shim-1.53.0-SNAPSHOT.jar against opentelemetry-opentracing-shim-1.52.0.jar
No changes.

View File

@ -1,2 +1,2 @@
Comparing source compatibility of opentelemetry-sdk-common-1.52.0-SNAPSHOT.jar against opentelemetry-sdk-common-1.51.0.jar
Comparing source compatibility of opentelemetry-sdk-common-1.53.0-SNAPSHOT.jar against opentelemetry-sdk-common-1.52.0.jar
No changes.

View File

@ -1,4 +1,2 @@
Comparing source compatibility of opentelemetry-sdk-extension-autoconfigure-spi-1.52.0-SNAPSHOT.jar against opentelemetry-sdk-extension-autoconfigure-spi-1.51.0.jar
*** MODIFIED INTERFACE: PUBLIC ABSTRACT io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.common.ComponentLoader getComponentLoader()
Comparing source compatibility of opentelemetry-sdk-extension-autoconfigure-spi-1.53.0-SNAPSHOT.jar against opentelemetry-sdk-extension-autoconfigure-spi-1.52.0.jar
No changes.

View File

@ -1,4 +1,2 @@
Comparing source compatibility of opentelemetry-sdk-extension-autoconfigure-1.52.0-SNAPSHOT.jar against opentelemetry-sdk-extension-autoconfigure-1.51.0.jar
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdkBuilder (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdkBuilder setComponentLoader(io.opentelemetry.common.ComponentLoader)
Comparing source compatibility of opentelemetry-sdk-extension-autoconfigure-1.53.0-SNAPSHOT.jar against opentelemetry-sdk-extension-autoconfigure-1.52.0.jar
No changes.

View File

@ -1,2 +1,2 @@
Comparing source compatibility of opentelemetry-sdk-extension-jaeger-remote-sampler-1.52.0-SNAPSHOT.jar against opentelemetry-sdk-extension-jaeger-remote-sampler-1.51.0.jar
Comparing source compatibility of opentelemetry-sdk-extension-jaeger-remote-sampler-1.53.0-SNAPSHOT.jar against opentelemetry-sdk-extension-jaeger-remote-sampler-1.52.0.jar
No changes.

View File

@ -1,2 +1,2 @@
Comparing source compatibility of opentelemetry-sdk-logs-1.52.0-SNAPSHOT.jar against opentelemetry-sdk-logs-1.51.0.jar
Comparing source compatibility of opentelemetry-sdk-logs-1.53.0-SNAPSHOT.jar against opentelemetry-sdk-logs-1.52.0.jar
No changes.

View File

@ -1,2 +1,2 @@
Comparing source compatibility of opentelemetry-sdk-metrics-1.52.0-SNAPSHOT.jar against opentelemetry-sdk-metrics-1.51.0.jar
Comparing source compatibility of opentelemetry-sdk-metrics-1.53.0-SNAPSHOT.jar against opentelemetry-sdk-metrics-1.52.0.jar
No changes.

View File

@ -1,2 +1,2 @@
Comparing source compatibility of opentelemetry-sdk-testing-1.52.0-SNAPSHOT.jar against opentelemetry-sdk-testing-1.51.0.jar
Comparing source compatibility of opentelemetry-sdk-testing-1.53.0-SNAPSHOT.jar against opentelemetry-sdk-testing-1.52.0.jar
No changes.

View File

@ -1,2 +1,2 @@
Comparing source compatibility of opentelemetry-sdk-trace-1.52.0-SNAPSHOT.jar against opentelemetry-sdk-trace-1.51.0.jar
Comparing source compatibility of opentelemetry-sdk-trace-1.53.0-SNAPSHOT.jar against opentelemetry-sdk-trace-1.52.0.jar
No changes.

View File

@ -1,2 +1,2 @@
Comparing source compatibility of opentelemetry-sdk-1.52.0-SNAPSHOT.jar against opentelemetry-sdk-1.51.0.jar
Comparing source compatibility of opentelemetry-sdk-1.53.0-SNAPSHOT.jar against opentelemetry-sdk-1.52.0.jar
No changes.

View File

@ -66,6 +66,7 @@ testing {
implementation("io.grpc:grpc-stub")
implementation("io.grpc:grpc-netty")
implementation("com.fasterxml.jackson.core:jackson-core")
}
}
}

View File

@ -71,7 +71,7 @@ class UnsafeAccess {
private UnsafeAccess() {}
private static class UnsafeHolder {
public static final Unsafe UNSAFE;
private static final Unsafe UNSAFE;
static {
UNSAFE = getUnsafe();

View File

@ -36,7 +36,7 @@ class ExporterInstrumentationTest {
Supplier<MeterProvider> meterProviderSupplier = mock(Supplier.class);
@ParameterizedTest
@EnumSource()
@EnumSource
void validMeterProvider(InternalTelemetryVersion schemaVersion) {
when(meterProviderSupplier.get())
.thenReturn(
@ -84,7 +84,7 @@ class ExporterInstrumentationTest {
}
@ParameterizedTest
@EnumSource()
@EnumSource
void noopMeterProvider(InternalTelemetryVersion schemaVersion) {
when(meterProviderSupplier.get()).thenReturn(MeterProvider.noop());

View File

@ -121,7 +121,7 @@ class GrpcExporterTest {
private static class DummyServiceFutureStub
extends MarshalerServiceStub<DummyMarshaler, Object, DummyServiceFutureStub> {
protected DummyServiceFutureStub(Channel channel, CallOptions callOptions) {
private DummyServiceFutureStub(Channel channel, CallOptions callOptions) {
super(channel, callOptions);
}
@ -147,7 +147,7 @@ class GrpcExporterTest {
private static class DummyMarshaler extends MarshalerWithSize {
protected DummyMarshaler() {
private DummyMarshaler() {
super(0);
}

View File

@ -34,7 +34,7 @@ dependencies {
jmhImplementation("com.linecorp.armeria:armeria")
jmhImplementation("com.linecorp.armeria:armeria-grpc")
jmhImplementation("io.opentelemetry.proto:opentelemetry-proto")
jmhRuntimeOnly("com.squareup.okhttp3:okhttp")
jmhRuntimeOnly("com.squareup.okhttp3:okhttp-jvm")
jmhRuntimeOnly("io.grpc:grpc-netty")
}
@ -64,8 +64,12 @@ testing {
}
}
}
if (it.equals("LATEST")) {
implementation("com.squareup.okhttp3:okhttp-jvm")
} else {
implementation("com.squareup.okhttp3:okhttp")
}
implementation("com.squareup.okhttp3:okhttp")
implementation("io.grpc:grpc-stub")
}

View File

@ -110,12 +110,12 @@ public class StringMarshalBenchmark {
context = new MarshalerContext(/* marshalStringNoAllocation= */ true, useUnsafe);
}
public void initialize(String string) {
private void initialize(String string) {
value = string;
size = StringAnyValueStatelessMarshaler.INSTANCE.getBinarySerializedSize(string, context);
}
public void reset() {
private void reset() {
context.reset();
}

View File

@ -42,12 +42,12 @@ public final class ResourceLogsMarshaler extends MarshalerWithSize {
int posResource = 0;
for (Map.Entry<Resource, Map<InstrumentationScopeInfo, List<Marshaler>>> entry :
resourceAndScopeMap.entrySet()) {
InstrumentationScopeLogsMarshaler[] instrumentationLibrarySpansMarshalers =
InstrumentationScopeLogsMarshaler[] instrumentationScopeLogsMarshalers =
new InstrumentationScopeLogsMarshaler[entry.getValue().size()];
int posInstrumentation = 0;
for (Map.Entry<InstrumentationScopeInfo, List<Marshaler>> entryIs :
entry.getValue().entrySet()) {
instrumentationLibrarySpansMarshalers[posInstrumentation++] =
instrumentationScopeLogsMarshalers[posInstrumentation++] =
new InstrumentationScopeLogsMarshaler(
InstrumentationScopeMarshaler.create(entryIs.getKey()),
MarshalerUtil.toBytes(entryIs.getKey().getSchemaUrl()),
@ -57,7 +57,7 @@ public final class ResourceLogsMarshaler extends MarshalerWithSize {
new ResourceLogsMarshaler(
ResourceMarshaler.create(entry.getKey()),
MarshalerUtil.toBytes(entry.getKey().getSchemaUrl()),
instrumentationLibrarySpansMarshalers);
instrumentationScopeLogsMarshalers);
}
return resourceLogsMarshalers;

View File

@ -42,12 +42,12 @@ public final class ResourceMetricsMarshaler extends MarshalerWithSize {
int posResource = 0;
for (Map.Entry<Resource, Map<InstrumentationScopeInfo, List<Marshaler>>> entry :
resourceAndScopeMap.entrySet()) {
InstrumentationScopeMetricsMarshaler[] instrumentationLibrarySpansMarshalers =
InstrumentationScopeMetricsMarshaler[] instrumentationScopeMetricsMarshalers =
new InstrumentationScopeMetricsMarshaler[entry.getValue().size()];
int posInstrumentation = 0;
for (Map.Entry<InstrumentationScopeInfo, List<Marshaler>> entryIs :
entry.getValue().entrySet()) {
instrumentationLibrarySpansMarshalers[posInstrumentation++] =
instrumentationScopeMetricsMarshalers[posInstrumentation++] =
new InstrumentationScopeMetricsMarshaler(
InstrumentationScopeMarshaler.create(entryIs.getKey()),
MarshalerUtil.toBytes(entryIs.getKey().getSchemaUrl()),
@ -57,7 +57,7 @@ public final class ResourceMetricsMarshaler extends MarshalerWithSize {
new ResourceMetricsMarshaler(
ResourceMarshaler.create(entry.getKey()),
MarshalerUtil.toBytes(entry.getKey().getSchemaUrl()),
instrumentationLibrarySpansMarshalers);
instrumentationScopeMetricsMarshalers);
}
return resourceMetricsMarshalers;

View File

@ -55,6 +55,7 @@ import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.ArgumentsProvider;
import org.junit.jupiter.params.provider.ArgumentsSource;
import org.junit.jupiter.params.support.ParameterDeclarations;
class LowAllocationMetricsRequestMarshalerTest {
@ -127,7 +128,7 @@ class LowAllocationMetricsRequestMarshalerTest {
MarshalerContext context = new MarshalerContext();
class TestMarshaler extends MarshalerWithSize {
protected TestMarshaler() {
TestMarshaler() {
super(ExemplarStatelessMarshaler.INSTANCE.getBinarySerializedSize(exemplar, context));
}
@ -170,7 +171,7 @@ class LowAllocationMetricsRequestMarshalerTest {
MarshalerContext context = new MarshalerContext();
class TestMarshaler extends MarshalerWithSize {
protected TestMarshaler() {
TestMarshaler() {
super(SummaryStatelessMarshaler.INSTANCE.getBinarySerializedSize(summary, context));
}
@ -225,7 +226,8 @@ class LowAllocationMetricsRequestMarshalerTest {
private static class MetricsProvider implements ArgumentsProvider {
@Override
public Stream<? extends Arguments> provideArguments(ExtensionContext context) {
public Stream<? extends Arguments> provideArguments(
ParameterDeclarations parameters, ExtensionContext context) {
return Stream.of(
arguments(
named(
@ -386,7 +388,8 @@ class LowAllocationMetricsRequestMarshalerTest {
private static class ExemplarProvider implements ArgumentsProvider {
@Override
public Stream<? extends Arguments> provideArguments(ExtensionContext context) {
public Stream<? extends Arguments> provideArguments(
ParameterDeclarations parameters, ExtensionContext context) {
SpanContext spanContext =
SpanContext.create(
"7b2e170db4df2d593ddb4ddf2ddf2d59",

View File

@ -35,13 +35,13 @@ final class ResourceProfilesMarshaler extends MarshalerWithSize {
int posResource = 0;
for (Map.Entry<Resource, Map<InstrumentationScopeInfo, List<ProfileMarshaler>>> entry :
resourceAndScopeMap.entrySet()) {
InstrumentationScopeProfilesMarshaler[] instrumentationLibrarySpansMarshalers =
InstrumentationScopeProfilesMarshaler[] instrumentationScopeProfilesMarshalers =
new InstrumentationScopeProfilesMarshaler[entry.getValue().size()];
int posInstrumentation = 0;
for (Map.Entry<InstrumentationScopeInfo, List<ProfileMarshaler>> entryIs :
entry.getValue().entrySet()) {
instrumentationLibrarySpansMarshalers[posInstrumentation++] =
instrumentationScopeProfilesMarshalers[posInstrumentation++] =
new InstrumentationScopeProfilesMarshaler(
InstrumentationScopeMarshaler.create(entryIs.getKey()),
MarshalerUtil.toBytes(entryIs.getKey().getSchemaUrl()),
@ -52,7 +52,7 @@ final class ResourceProfilesMarshaler extends MarshalerWithSize {
new ResourceProfilesMarshaler(
ResourceMarshaler.create(entry.getKey()),
MarshalerUtil.toBytes(entry.getKey().getSchemaUrl()),
instrumentationLibrarySpansMarshalers);
instrumentationScopeProfilesMarshalers);
}
return resourceProfilesMarshalers;

View File

@ -27,7 +27,7 @@ dependencies {
api("io.opentelemetry.proto:opentelemetry-proto")
api("org.junit.jupiter:junit-jupiter-api")
implementation("com.squareup.okhttp3:okhttp")
implementation("com.squareup.okhttp3:okhttp-jvm")
implementation("org.junit.jupiter:junit-jupiter-params")
implementation("com.linecorp.armeria:armeria-grpc-protocol")

View File

@ -98,6 +98,7 @@ import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.ArgumentsProvider;
import org.junit.jupiter.params.provider.ArgumentsSource;
import org.junit.jupiter.params.provider.ValueSource;
import org.junit.jupiter.params.support.ParameterDeclarations;
import org.slf4j.event.Level;
import org.slf4j.event.LoggingEvent;
@ -461,7 +462,8 @@ public abstract class AbstractGrpcTelemetryExporterTest<T, U extends Message> {
private static class ClientPrivateKeyProvider implements ArgumentsProvider {
@Override
@SuppressWarnings("PrimitiveArrayPassedToVarargsMethod")
public Stream<? extends Arguments> provideArguments(ExtensionContext context) throws Exception {
public Stream<? extends Arguments> provideArguments(
ParameterDeclarations parameters, ExtensionContext context) throws Exception {
return Stream.of(
arguments(named("PEM", Files.readAllBytes(clientCertificate.privateKeyFile().toPath()))),
arguments(named("DER", clientCertificate.privateKey().getEncoded())));

View File

@ -99,6 +99,7 @@ import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.ArgumentsProvider;
import org.junit.jupiter.params.provider.ArgumentsSource;
import org.junit.jupiter.params.provider.ValueSource;
import org.junit.jupiter.params.support.ParameterDeclarations;
import org.mockserver.integration.ClientAndServer;
import org.slf4j.event.Level;
import org.slf4j.event.LoggingEvent;
@ -475,7 +476,8 @@ public abstract class AbstractHttpTelemetryExporterTest<T, U extends Message> {
private static class ClientPrivateKeyProvider implements ArgumentsProvider {
@Override
@SuppressWarnings("PrimitiveArrayPassedToVarargsMethod")
public Stream<? extends Arguments> provideArguments(ExtensionContext context) throws Exception {
public Stream<? extends Arguments> provideArguments(
ParameterDeclarations parameters, ExtensionContext context) throws Exception {
return Stream.of(
arguments(named("PEM", Files.readAllBytes(clientCertificate.privateKeyFile().toPath()))),
arguments(named("DER", clientCertificate.privateKey().getEncoded())));

View File

@ -46,7 +46,7 @@ import io.opentelemetry.sdk.metrics.internal.data.ImmutableSumData;
import io.opentelemetry.sdk.resources.Resource;
import io.prometheus.metrics.exporter.httpserver.HTTPServer;
import io.prometheus.metrics.exporter.httpserver.MetricsHandler;
import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_31_0.Metrics;
import io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_31_1.Metrics;
import io.prometheus.metrics.model.registry.PrometheusRegistry;
import java.io.ByteArrayInputStream;
import java.io.IOException;

View File

@ -10,7 +10,7 @@ dependencies {
implementation(project(":exporters:common"))
implementation(project(":sdk:common"))
compileOnly("com.fasterxml.jackson.core:jackson-core")
testImplementation("com.fasterxml.jackson.core:jackson-core")
}
tasks {

View File

@ -12,7 +12,7 @@ dependencies {
implementation(project(":exporters:common"))
implementation(project(":sdk:common"))
implementation("com.squareup.okhttp3:okhttp")
implementation("com.squareup.okhttp3:okhttp-jvm")
compileOnly("io.grpc:grpc-stub")
compileOnly("com.fasterxml.jackson.core:jackson-core")

View File

@ -75,6 +75,7 @@ public final class OkHttpGrpcSender<T extends Marshaler> implements GrpcSender<T
@Nullable private final Compressor compressor;
/** Creates a new {@link OkHttpGrpcSender}. */
@SuppressWarnings("TooManyParameters")
public OkHttpGrpcSender(
String endpoint,
@Nullable Compressor compressor,

View File

@ -23,7 +23,7 @@ dependencies {
implementation(project(":api:incubator"))
}
// org.graalvm.buildtools.native pluging requires java 11+ as of version 0.9.26
// org.graalvm.buildtools.native plugin requires java 11+ as of version 0.9.26
// https://github.com/graalvm/native-build-tools/blob/master/docs/src/docs/asciidoc/index.adoc
tasks {
withType<JavaCompile>().configureEach {
@ -43,6 +43,24 @@ graalvmNative {
// Required as of junit 5.10.0: https://junit.org/junit5/docs/5.10.0/release-notes/#deprecations-and-breaking-changes
buildArgs.add("--initialize-at-build-time=org.junit.platform.launcher.core.LauncherConfig")
buildArgs.add("--initialize-at-build-time=org.junit.jupiter.engine.config.InstantiatingConfigurationParameterConverter")
// Required as of junit 5.13.0: https://junit.org/junit5/docs/5.13.0/release-notes/#deprecations-and-breaking-changes
buildArgs.add("--initialize-at-build-time=org.junit.jupiter.api.DisplayNameGenerator\$IndicativeSentences")
buildArgs.add("--initialize-at-build-time=org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor\$ClassInfo")
buildArgs.add("--initialize-at-build-time=org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor\$LifecycleMethods")
buildArgs.add("--initialize-at-build-time=org.junit.jupiter.engine.descriptor.ClassTemplateInvocationTestDescriptor")
buildArgs.add("--initialize-at-build-time=org.junit.jupiter.engine.descriptor.ClassTemplateTestDescriptor")
buildArgs.add("--initialize-at-build-time=org.junit.jupiter.engine.descriptor.DynamicDescendantFilter\$Mode")
buildArgs.add("--initialize-at-build-time=org.junit.jupiter.engine.descriptor.ExclusiveResourceCollector\$1")
buildArgs.add("--initialize-at-build-time=org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor\$MethodInfo")
buildArgs.add("--initialize-at-build-time=org.junit.jupiter.engine.discovery.ClassSelectorResolver\$DummyClassTemplateInvocationContext")
buildArgs.add("--initialize-at-build-time=org.junit.platform.engine.support.store.NamespacedHierarchicalStore\$EvaluatedValue")
buildArgs.add("--initialize-at-build-time=org.junit.platform.launcher.core.DiscoveryIssueNotifier")
buildArgs.add("--initialize-at-build-time=org.junit.platform.launcher.core.HierarchicalOutputDirectoryProvider")
buildArgs.add("--initialize-at-build-time=org.junit.platform.launcher.core.LauncherDiscoveryResult\$EngineResultInfo")
buildArgs.add("--initialize-at-build-time=org.junit.platform.launcher.core.LauncherPhase")
buildArgs.add("--initialize-at-build-time=org.junit.platform.suite.engine.DiscoverySelectorResolver")
buildArgs.add("--initialize-at-build-time=org.junit.platform.suite.engine.SuiteTestDescriptor\$DiscoveryIssueForwardingListener")
buildArgs.add("--initialize-at-build-time=org.junit.platform.suite.engine.SuiteTestDescriptor\$LifecycleMethods")
}
}
toolchainDetection.set(false)

View File

@ -21,7 +21,7 @@ dependencies {
implementation(project(":exporters:otlp:all"))
}
// org.graalvm.buildtools.native pluging requires java 11+ as of version 0.9.26
// org.graalvm.buildtools.native plugin requires java 11+ as of version 0.9.26
// https://github.com/graalvm/native-build-tools/blob/master/docs/src/docs/asciidoc/index.adoc
tasks {
withType<JavaCompile>().configureEach {
@ -41,6 +41,24 @@ graalvmNative {
// Required as of junit 5.10.0: https://junit.org/junit5/docs/5.10.0/release-notes/#deprecations-and-breaking-changes
buildArgs.add("--initialize-at-build-time=org.junit.platform.launcher.core.LauncherConfig")
buildArgs.add("--initialize-at-build-time=org.junit.jupiter.engine.config.InstantiatingConfigurationParameterConverter")
// Required as of junit 5.13.0: https://junit.org/junit5/docs/5.13.0/release-notes/#deprecations-and-breaking-changes
buildArgs.add("--initialize-at-build-time=org.junit.jupiter.api.DisplayNameGenerator\$IndicativeSentences")
buildArgs.add("--initialize-at-build-time=org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor\$ClassInfo")
buildArgs.add("--initialize-at-build-time=org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor\$LifecycleMethods")
buildArgs.add("--initialize-at-build-time=org.junit.jupiter.engine.descriptor.ClassTemplateInvocationTestDescriptor")
buildArgs.add("--initialize-at-build-time=org.junit.jupiter.engine.descriptor.ClassTemplateTestDescriptor")
buildArgs.add("--initialize-at-build-time=org.junit.jupiter.engine.descriptor.DynamicDescendantFilter\$Mode")
buildArgs.add("--initialize-at-build-time=org.junit.jupiter.engine.descriptor.ExclusiveResourceCollector\$1")
buildArgs.add("--initialize-at-build-time=org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor\$MethodInfo")
buildArgs.add("--initialize-at-build-time=org.junit.jupiter.engine.discovery.ClassSelectorResolver\$DummyClassTemplateInvocationContext")
buildArgs.add("--initialize-at-build-time=org.junit.platform.engine.support.store.NamespacedHierarchicalStore\$EvaluatedValue")
buildArgs.add("--initialize-at-build-time=org.junit.platform.launcher.core.DiscoveryIssueNotifier")
buildArgs.add("--initialize-at-build-time=org.junit.platform.launcher.core.HierarchicalOutputDirectoryProvider")
buildArgs.add("--initialize-at-build-time=org.junit.platform.launcher.core.LauncherDiscoveryResult\$EngineResultInfo")
buildArgs.add("--initialize-at-build-time=org.junit.platform.launcher.core.LauncherPhase")
buildArgs.add("--initialize-at-build-time=org.junit.platform.suite.engine.DiscoverySelectorResolver")
buildArgs.add("--initialize-at-build-time=org.junit.platform.suite.engine.SuiteTestDescriptor\$DiscoveryIssueForwardingListener")
buildArgs.add("--initialize-at-build-time=org.junit.platform.suite.engine.SuiteTestDescriptor\$LifecycleMethods")
}
}
toolchainDetection.set(false)

View File

@ -30,7 +30,6 @@ import io.opentelemetry.sdk.testing.exporter.InMemorySpanExporter;
import io.opentelemetry.sdk.trace.SdkTracerProvider;
import io.opentelemetry.sdk.trace.data.SpanData;
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
import java.io.IOException;
import java.net.URI;
import java.util.List;
import java.util.function.Supplier;
@ -44,6 +43,7 @@ import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.ArgumentsProvider;
import org.junit.jupiter.params.provider.ArgumentsSource;
import org.junit.jupiter.params.support.ParameterDeclarations;
/** Integration tests for the B3 propagators, in various configurations. */
class B3PropagationIntegrationTest {
@ -161,7 +161,7 @@ class B3PropagationIntegrationTest {
@ParameterizedTest
@ArgumentsSource(WebClientArgumentSupplier.class)
void propagation(String testType, WebClient client) throws IOException {
void propagation(String testType, WebClient client) {
OpenTelemetrySdk clientSdk = setupClient();
Span span = clientSdk.getTracer("testTracer").spanBuilder("clientSpan").startSpan();
@ -182,7 +182,7 @@ class B3PropagationIntegrationTest {
@ParameterizedTest
@ArgumentsSource(WebClientArgumentSupplier.class)
void noClientTracing(String testType, WebClient client) throws IOException {
void noClientTracing(String testType, WebClient client) {
assertThat(client.get("/frontend").aggregate().join().contentUtf8()).isEqualTo("OK");
List<SpanData> finishedSpanItems = spanExporter.getFinishedSpanItems();
@ -237,7 +237,8 @@ class B3PropagationIntegrationTest {
public static class WebClientArgumentSupplier implements ArgumentsProvider {
@Override
public Stream<? extends Arguments> provideArguments(ExtensionContext context) {
public Stream<? extends Arguments> provideArguments(
ParameterDeclarations parameters, ExtensionContext context) {
return Stream.of(
Arguments.of("b3multi", b3MultiClient), Arguments.of("b3single", b3SingleClient));
}

View File

@ -1,4 +1,4 @@
FROM python:3.13.5@sha256:a6af772cf98267c48c145928cbeb35bd8e89b610acd70f93e3e8ac3e96c92af8 AS build
FROM python:3.13.5@sha256:4ea77121eab13d9e71f2783d7505f5655b25bb7b2c263e8020aae3b555dbc0b2 AS build
# Main branch SHA as of April-1-2021
ARG TRACECONTEXT_GIT_TAG="dcd3ad9b7d6ac36f70ff3739874b73c11b0302a1"
@ -11,7 +11,7 @@ RUN unzip trace-context.zip
RUN rm trace-context.zip
RUN mv trace-context-${TRACECONTEXT_GIT_TAG}/test /tracecontext-testsuite
FROM python:3.13.5-slim@sha256:6544e0e002b40ae0f59bc3618b07c1e48064c4faed3a15ae2fbd2e8f663e8283
FROM python:3.13.5-slim@sha256:4c2cf9917bd1cbacc5e9b07320025bdb7cdf2df7b0ceaccb55e9dd7e30987419
RUN pip install aiohttp

View File

@ -129,12 +129,12 @@ final class OpenTelemetrySpanBuilderImpl extends SpanBuilder {
Boolean hasRemoteParent = null;
if (ocRemoteParentSpanContext != null && ocRemoteParentSpanContext.isValid()) {
ocParentContext = ocRemoteParentSpanContext;
hasRemoteParent = Boolean.TRUE;
hasRemoteParent = true;
ocTraceId = ocParentContext.getTraceId();
ocTracestate = ocParentContext.getTracestate();
} else if (ocParent != null && ocParent.getContext().isValid()) {
ocParentContext = ocParent.getContext();
hasRemoteParent = Boolean.FALSE;
hasRemoteParent = false;
ocTraceId = ocParentContext.getTraceId();
ocTracestate = ocParentContext.getTracestate();
} else {

View File

@ -246,7 +246,7 @@ public final class DeclarativeConfiguration {
private final LoadSettings settings;
private final Map<String, String> environmentVariables;
public EnvLoad(LoadSettings settings, Map<String, String> environmentVariables) {
private EnvLoad(LoadSettings settings, Map<String, String> environmentVariables) {
super(settings);
this.settings = settings;
this.environmentVariables = environmentVariables;
@ -295,7 +295,7 @@ public final class DeclarativeConfiguration {
private static final int ESCAPE_SEQUENCE_LENGTH = ESCAPE_SEQUENCE.length();
private static final char ESCAPE_SEQUENCE_REPLACEMENT = '$';
public EnvComposer(
private EnvComposer(
LoadSettings settings, ParserImpl parser, Map<String, String> environmentVariables) {
super(settings, parser);
this.load = new Load(settings);

View File

@ -34,12 +34,12 @@ final class OpenTelemetryConfigurationFactory
String fileFormat = model.getFileFormat();
if (fileFormat == null || !SUPPORTED_FILE_FORMATS.matcher(fileFormat).matches()) {
throw new DeclarativeConfigException(
"Unsupported file format. Supported formats include 0.4, 1.0*");
"Unsupported file format '" + fileFormat + "'. Supported formats include 0.4, 1.0*");
}
// TODO(jack-berg): log warning if version is not exact match, which may result in unexpected
// behavior for experimental properties.
if (Objects.equals(Boolean.TRUE, model.getDisabled())) {
if (Objects.equals(true, model.getDisabled())) {
return builder.build();
}

View File

@ -92,7 +92,8 @@ class OpenTelemetryConfigurationFactoryTest {
assertThatThrownBy(
() -> OpenTelemetryConfigurationFactory.getInstance().create(model, context))
.isInstanceOf(DeclarativeConfigException.class)
.hasMessage("Unsupported file format. Supported formats include 0.4, 1.0*");
.hasMessageMatching(
"Unsupported file format '.+'\\. Supported formats include 0\\.4, 1\\.0\\*");
}
}

View File

@ -20,7 +20,7 @@ dependencies {
implementation(project(":exporters:common"))
implementation(project(":exporters:sender:okhttp"))
implementation("com.squareup.okhttp3:okhttp")
implementation("com.squareup.okhttp3:okhttp-jvm")
compileOnly("io.grpc:grpc-api")
compileOnly("io.grpc:grpc-protobuf")

View File

@ -51,6 +51,7 @@ import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.ArgumentsProvider;
import org.junit.jupiter.params.provider.ArgumentsSource;
import org.junit.jupiter.params.support.ParameterDeclarations;
import org.slf4j.event.Level;
import org.slf4j.event.LoggingEvent;
@ -192,7 +193,8 @@ class JaegerRemoteSamplerTest {
private static class ClientPrivateKeyProvider implements ArgumentsProvider {
@Override
@SuppressWarnings("PrimitiveArrayPassedToVarargsMethod")
public Stream<? extends Arguments> provideArguments(ExtensionContext context) throws Exception {
public Stream<? extends Arguments> provideArguments(
ParameterDeclarations parameters, ExtensionContext context) throws Exception {
return Stream.of(
arguments(named("PEM", Files.readAllBytes(clientCertificate.privateKeyFile().toPath()))),
arguments(named("DER", clientCertificate.privateKey().getEncoded())));

View File

@ -8,6 +8,7 @@ package io.opentelemetry.sdk.internal;
import static java.util.concurrent.TimeUnit.MINUTES;
import io.opentelemetry.sdk.common.Clock;
import java.util.Locale;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Level;
@ -21,28 +22,52 @@ import javax.annotation.Nullable;
* at any time.
*/
public class ThrottlingLogger {
private static final double RATE_LIMIT = 5;
private static final double THROTTLED_RATE_LIMIT = 1;
private static final TimeUnit rateTimeUnit = MINUTES;
private static final double DEFAULT_RATE_LIMIT = 5;
private static final double DEFAULT_THROTTLED_RATE_LIMIT = 1;
private static final TimeUnit DEFAULT_RATE_TIME_UNIT = MINUTES;
private final Logger delegate;
private final AtomicBoolean throttled = new AtomicBoolean(false);
private final RateLimiter fastRateLimiter;
private final RateLimiter throttledRateLimiter;
private final double rateLimit;
private final double throttledRateLimit;
private final TimeUnit rateTimeUnit;
/** Create a new logger which will enforce a max number of messages per minute. */
public ThrottlingLogger(Logger delegate) {
this(delegate, Clock.getDefault());
}
/** Alternate way to create logger that allows setting custom intervals and units. * */
public ThrottlingLogger(
Logger delegate, double rateLimit, double throttledRateLimit, TimeUnit rateTimeUnit) {
this(delegate, Clock.getDefault(), rateLimit, throttledRateLimit, rateTimeUnit);
}
// visible for testing
ThrottlingLogger(Logger delegate, Clock clock) {
this(delegate, clock, DEFAULT_RATE_LIMIT, DEFAULT_THROTTLED_RATE_LIMIT, DEFAULT_RATE_TIME_UNIT);
}
ThrottlingLogger(
Logger delegate,
Clock clock,
double rateLimit,
double throttledRateLimit,
TimeUnit rateTimeUnit) {
this.delegate = delegate;
this.rateLimit = rateLimit;
this.throttledRateLimit = throttledRateLimit;
this.rateTimeUnit = rateTimeUnit;
this.fastRateLimiter =
new RateLimiter(RATE_LIMIT / rateTimeUnit.toSeconds(1), RATE_LIMIT, clock);
new RateLimiter(this.rateLimit / this.rateTimeUnit.toSeconds(1), this.rateLimit, clock);
this.throttledRateLimiter =
new RateLimiter(
THROTTLED_RATE_LIMIT / rateTimeUnit.toSeconds(1), THROTTLED_RATE_LIMIT, clock);
this.throttledRateLimit / this.rateTimeUnit.toSeconds(1),
this.throttledRateLimit,
clock);
}
/** Log a message at the given level. */
@ -69,9 +94,15 @@ public class ThrottlingLogger {
if (throttled.compareAndSet(false, true)) {
// spend the balance in the throttled one, so that it starts at zero.
throttledRateLimiter.trySpend(THROTTLED_RATE_LIMIT);
delegate.log(
level, "Too many log messages detected. Will only log once per minute from now on.");
throttledRateLimiter.trySpend(throttledRateLimit);
String timeUnitString = rateTimeUnit.toString().toLowerCase(Locale.ROOT);
String throttleMessage =
String.format(
Locale.ROOT,
"Too many log messages detected. Will only log %.0f time(s) per %s from now on.",
throttledRateLimit,
timeUnitString.substring(0, timeUnitString.length() - 1));
delegate.log(level, throttleMessage);
doLog(level, message, throwable);
}
}

View File

@ -15,6 +15,7 @@ import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
import io.opentelemetry.sdk.common.Clock;
import io.opentelemetry.sdk.testing.time.TestClock;
import java.time.Duration;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.junit.jupiter.api.Test;
@ -45,6 +46,23 @@ class ThrottlingLoggerTest {
.isSameAs(throwable);
}
@Test
void delegationCustom() {
ThrottlingLogger logger = new ThrottlingLogger(realLogger, 10, 2, TimeUnit.HOURS);
logger.log(Level.WARNING, "oh no!");
logger.log(Level.INFO, "oh yes!");
RuntimeException throwable = new RuntimeException();
logger.log(Level.SEVERE, "secrets", throwable);
logs.assertContains(loggingEvent -> loggingEvent.getLevel().equals(WARN), "oh no!");
logs.assertContains(loggingEvent -> loggingEvent.getLevel().equals(INFO), "oh yes!");
assertThat(
logs.assertContains(loggingEvent -> loggingEvent.getLevel().equals(ERROR), "secrets")
.getThrowable())
.isSameAs(throwable);
}
@Test
void logsBelowLevelDontCount() {
ThrottlingLogger logger =
@ -76,7 +94,26 @@ class ThrottlingLoggerTest {
assertThat(logs.getEvents()).hasSize(7);
logs.assertDoesNotContain("oh no I should be suppressed!");
logs.assertContains(
"Too many log messages detected. Will only log once per minute from now on.");
"Too many log messages detected. Will only log 1 time(s) per minute from now on.");
logs.assertContains("oh no I should trigger suppression!");
}
@Test
void tenInAnHourTriggersLimiting() {
Clock clock = TestClock.create();
ThrottlingLogger logger = new ThrottlingLogger(realLogger, clock, 10, 2, TimeUnit.HOURS);
for (int i = 0; i < 10; i++) {
logger.log(Level.WARNING, "oh no!");
}
logger.log(Level.WARNING, "oh no I should trigger suppression!");
logger.log(Level.WARNING, "oh no I should be suppressed!");
assertThat(logs.getEvents()).hasSize(12);
logs.assertDoesNotContain("oh no I should be suppressed!");
logs.assertContains(
"Too many log messages detected. Will only log 2 time(s) per hour from now on.");
logs.assertContains("oh no I should trigger suppression!");
}
@ -130,7 +167,7 @@ class ThrottlingLoggerTest {
logs.assertDoesNotContain("oh no I should be suppressed!");
logs.assertContains("oh no I should trigger suppression!");
logs.assertContains(
"Too many log messages detected. Will only log once per minute from now on.");
"Too many log messages detected. Will only log 1 time(s) per minute from now on.");
clock.advance(Duration.ofMillis(60_001));
logger.log(Level.WARNING, "oh no!");
@ -145,6 +182,41 @@ class ThrottlingLoggerTest {
assertThat(logs.getEvents().get(8).getMessage()).isEqualTo("oh no!");
}
@Test
void afterAnHourLetTwoThrough() {
TestClock clock = TestClock.create();
ThrottlingLogger logger = new ThrottlingLogger(realLogger, clock, 10, 2, TimeUnit.HOURS);
for (int i = 0; i < 10; i++) {
logger.log(Level.WARNING, "oh no!");
}
logger.log(Level.WARNING, "oh no I should trigger suppression!");
logger.log(Level.WARNING, "oh no I should be suppressed!");
assertThat(logs.getEvents()).hasSize(12);
logs.assertDoesNotContain("oh no I should be suppressed!");
logs.assertContains("oh no I should trigger suppression!");
logs.assertContains(
"Too many log messages detected. Will only log 2 time(s) per hour from now on.");
clock.advance(Duration.ofMinutes(61));
logger.log(Level.WARNING, "oh no!");
logger.log(Level.WARNING, "oh no!");
logger.log(Level.WARNING, "oh no I should be suppressed!");
assertThat(logs.getEvents()).hasSize(14);
assertThat(logs.getEvents().get(13).getMessage()).isEqualTo("oh no!");
clock.advance(Duration.ofMinutes(61));
logger.log(Level.WARNING, "oh no!");
logger.log(Level.WARNING, "oh no!");
logger.log(Level.WARNING, "oh no I should be suppressed!");
assertThat(logs.getEvents()).hasSize(16);
assertThat(logs.getEvents().get(15).getMessage()).isEqualTo("oh no!");
logs.assertDoesNotContain("oh no I should be suppressed!");
}
@Test
void allowOnlyOneLogPerMinuteAfterSuppression() {
TestClock clock = TestClock.create();
@ -181,4 +253,45 @@ class ThrottlingLoggerTest {
assertThat(logs.getEvents()).hasSize(8);
assertThat(logs.getEvents().get(7).getMessage()).isEqualTo("allowed 1");
}
@Test
void allowOnlyTwoLogPerHourAfterSuppression() {
TestClock clock = TestClock.create();
ThrottlingLogger logger = new ThrottlingLogger(realLogger, clock, 10, 2, TimeUnit.HOURS);
for (int i = 0; i < 10; i++) {
logger.log(Level.WARNING, "oh no!");
}
logger.log(Level.WARNING, "oh no I should trigger suppression!");
logger.log(Level.WARNING, "oh no I should be suppressed!");
assertThat(logs.getEvents()).hasSize(12);
clock.advance(Duration.ofMinutes(10));
logger.log(Level.WARNING, "suppression 1");
clock.advance(Duration.ofMinutes(10));
logger.log(Level.WARNING, "suppression 2");
clock.advance(Duration.ofMinutes(10));
clock.advance(Duration.ofSeconds(1));
logger.log(Level.WARNING, "allowed 1");
clock.advance(Duration.ofMinutes(10));
logger.log(Level.WARNING, "suppression 3");
clock.advance(Duration.ofMinutes(10));
logger.log(Level.WARNING, "suppression 4");
clock.advance(Duration.ofMinutes(10));
clock.advance(Duration.ofSeconds(1));
logger.log(Level.WARNING, "allowed 2");
logs.assertDoesNotContain("suppression 1");
logs.assertDoesNotContain("suppression 2");
logs.assertDoesNotContain("suppression 3");
logs.assertDoesNotContain("suppression 4");
logs.assertContains("allowed 1");
logs.assertContains("allowed 2");
assertThat(logs.getEvents()).hasSize(14);
assertThat(logs.getEvents().get(12).getMessage()).isEqualTo("allowed 1");
assertThat(logs.getEvents().get(13).getMessage()).isEqualTo("allowed 2");
}
}

View File

@ -82,7 +82,7 @@ public enum TestSdk {
private abstract static class SdkBuilder {
abstract Meter build();
protected static Tracer buildTracer() {
private static Tracer buildTracer() {
return SdkTracerProvider.builder()
.setSampler(Sampler.alwaysOn())
.build()

View File

@ -49,7 +49,7 @@ public enum HistogramValueGenerator {
private final double[] pool;
private final AtomicInteger idx = new AtomicInteger(0);
public PoolSupplier(double[] pool) {
private PoolSupplier(double[] pool) {
this.pool = pool;
}

View File

@ -103,7 +103,7 @@ public class MutableHistogramPointDataTest {
assertThat(anotherPointData.hashCode()).isNotEqualTo(pointData.hashCode());
}
@Test()
@Test
void testBoundaries() {
MutableHistogramPointData pointData = new MutableHistogramPointData(10);
assertThatThrownBy(

View File

@ -56,6 +56,7 @@ import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.ArgumentsProvider;
import org.junit.jupiter.params.provider.ArgumentsSource;
import org.junit.jupiter.params.support.ParameterDeclarations;
class AttributesAdviceTest {
@ -220,7 +221,8 @@ class AttributesAdviceTest {
static final class InstrumentsProvider implements ArgumentsProvider {
@Override
public Stream<? extends Arguments> provideArguments(ExtensionContext context) {
public Stream<? extends Arguments> provideArguments(
ParameterDeclarations parameters, ExtensionContext context) {
return Stream.of(
// double counter
arguments(

View File

@ -151,7 +151,7 @@ class SdkTracerTest {
private static class SimpleSpanOperation implements OperationUpdater {
private final SdkTracer tracer;
public SimpleSpanOperation(SdkTracer tracer) {
private SimpleSpanOperation(SdkTracer tracer) {
this.tracer = tracer;
}
@ -168,7 +168,7 @@ class SdkTracerTest {
private static class CountingSpanExporter implements SpanExporter {
public final AtomicLong numberOfSpansExported = new AtomicLong();
private final AtomicLong numberOfSpansExported = new AtomicLong();
@Override
public CompletableResultCode export(Collection<SpanData> spans) {

View File

@ -1,7 +1,7 @@
pluginManagement {
plugins {
id("com.gradleup.shadow") version "8.3.8"
id("com.gradle.develocity") version "4.0.2"
id("com.gradle.develocity") version "4.1"
id("de.undercouch.download") version "5.6.0"
id("org.jsonschema2pojo") version "1.2.2"
id("io.github.gradle-nexus.publish-plugin") version "2.0.0"

View File

@ -1,7 +1,7 @@
val snapshot = true
allprojects {
var ver = "1.52.0"
var ver = "1.53.0"
val release = findProperty("otel.release")
if (release != null) {
ver += "-" + release