firebase / firebase/firebase-admin-java

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

オープン
#1,138 コメント 8 件 リアクション 0 件 担当者 1 名 @lahirumaramba が担当を希望しています GitHub で見る
api: core
主要言語
Java
スター
620
フォーク
305
平均マージ
3時間 23分
マージ済み PR(30日)
1

説明

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!

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。