firebase / firebase/firebase-admin-java

Opentelemetry-context conflict, please bump google-api-client dependency

Aperta
#1,138 8 commenti 0 reazioni 1 assegnatario Rivendicata da @lahirumaramba Vedi su GitHub
api: core
Lingua principale
Java
Stelle
620
Fork
305
Merge medio
3h 23m
PR unite (30g)
1

Descrizione

Please bump opentelemetry versions to 1.50 or higher.

[READ] Step 1: Are you in the right place?
Yes, this issue is for the code in this repository.

[REQUIRED] Step 2: Describe your environment
Operating System version: Any (e.g., Linux, macOS, Windows)

Firebase SDK version: 9.6.0 (and likely all newer versions)

Library version: 9.6.0

Firebase Product: Admin SDK (Core)

[REQUIRED] Step 3: Describe the problem
The firebase-admin SDK brings in an old version of io.opentelemetry:opentelemetry-context as a transitive dependency. This causes NoSuchMethodError exceptions at runtime for applications that use modern versions of the OpenTelemetry Java SDK.

The dependency chain is as follows:
com.google.firebase:firebase-admin → com.google.api-client:google-api-client → com.google.http-client:google-http-client → io.opentelemetry:opentelemetry-context

Newer OpenTelemetry libraries rely on the Context.getAll() method, which was introduced in opentelemetry-java v1.33.0. The commit that introduced this change is [here](https://github.com/open-telemetry/opentelemetry-java/commit/ccfcecf8fe35bf68a74f7d1242397a8574d59826).

Because firebase-admin depends on an older version of google-api-client, it forces a downgrade of opentelemetry-context, leading to the following error when newer instrumentation libraries are used:
java.lang.NoSuchMethodError: 'java.lang.Iterable io.opentelemetry.context.Context.getAll()

The current workaround is to manually exclude the transitive dependency in the build configuration, but the correct long-term solution is to update the google-api-client dependency in this project.

Steps to reproduce:
Create a new Maven project.

Add a dependency on firebase-admin.

Add a dependency on a newer OpenTelemetry library that requires a modern opentelemetry-context (e.g., opentelemetry-exporter-otlp).

Maven's dependency resolution will either select the older, incompatible version of opentelemetry-context or require manual intervention. If the older version is used, a NoSuchMethodError will occur at runtime when calling code that relies on Context.getAll().

Example code:

https://github.com/steffan-westcott/clj-otel/blob/d5bb87f8b99d8d30c98e320478260194ca559e4c/clj-otel-api/src/steffan_westcott/clj_otel/api/trace/http.clj#L303 (v2.8 & v2.9) doesn't work with io.opentelemetry:opentelemetry-context version 1.47

Thank you!

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.