Skip to content

OpenTelemetry should depend on okhttp, not okhttp-jvm #7678

@cbruegg

Description

@cbruegg

Describe the bug
In PR #7517, @jkwatson changed the dependency to OkHttp from okhttp to okhttp-jvm in an attempt to fix #7491. However, this breaks OkHttp dependency resolution when OpenTelemetry is used on Android. On Android, okhttp-android should be used. As OkHttp is a Kotlin Multiplatform project, it has an artifact okhttp that resolves to okhttp-android for Android projects and to okhttp-jvm for standard JVM projects. See here: https://github.com/square/okhttp?tab=readme-ov-file#maven-and-jvm-projects

As OpenTelemetry now hardcodes the dependency to okhttp-jvm, we end up with the wrong artifact in our Android project. Worse yet: As we have other dependencies that depend on okhttp-android, we have both artifacts in our classpath, which breaks the build:

Execution failed for task ':app:checkDebugDuplicateClasses'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
   > Duplicate class okhttp3.Address found in modules okhttp-jvm-5.1.0.jar -> okhttp-jvm-5.1.0 (com.squareup.okhttp3:okhttp-jvm:5.1.0) and okhttp-release.aar -> okhttp-release-runtime (com.squareup.okhttp3:okhttp-android:5.1.0)
     Duplicate class okhttp3.Authenticator found in modules okhttp-jvm-5.1.0.jar -> okhttp-jvm-5.1.0 (com.squareup.okhttp3:okhttp-jvm:5.1.0) and okhttp-release.aar -> okhttp-release-runtime (com.squareup.okhttp3:okhttp-android:5.1.0)

Steps to reproduce

What did you expect to see?
Build passes and the OkHttp dependency resolves to okhttp-android.

What did you see instead?
Build fails and OkHttp dependency is okhttp-jvm.

What version and what artifacts are you using?
Artifacts: (e.g., opentelemetry-api, opentelemetry-sdk, which exporters, etc)
Version: 1.53.0
How did you reference these artifacts? (excerpt from your build.gradle, pom.xml, etc)

implementation(platform(libs.opentelemetry.bom))
implementation(libs.opentelemetry.exporter.logging)
implementation(libs.opentelemetry.exporter.otlp)
implementation(libs.opentelemetry.exporter.otlp.common)
implementation(libs.opentelemetry.exporter.logging)
[versions]
opentelemetry = "1.53.0"
opentelemetry-instrumentation = "2.20.0-alpha"

[libraries]
opentelemetry-api = { group = "io.opentelemetry", name = "opentelemetry-api", version.ref = "opentelemetry" }
opentelemetry-bom = { group = "io.opentelemetry", name = "opentelemetry-bom", version.ref = "opentelemetry" }
opentelemetry-exporter-logging = { group = "io.opentelemetry", name = "opentelemetry-exporter-logging", version.ref = "opentelemetry" }
opentelemetry-exporter-otlp = { group = "io.opentelemetry", name = "opentelemetry-exporter-otlp", version.ref = "opentelemetry" }
opentelemetry-exporter-otlp-common = { group = "io.opentelemetry", name = "opentelemetry-exporter-otlp-common", version.ref = "opentelemetry" }
opentelemetry-extension-kotlin = { group = "io.opentelemetry", name = "opentelemetry-extension-kotlin", version.ref = "opentelemetry" }
opentelemetry-ktor = { group = "io.opentelemetry.instrumentation", name = "opentelemetry-ktor-2.0", version.ref = "opentelemetry-instrumentation" }
opentelemetry-okhttp3 = { group = "io.opentelemetry.instrumentation", name = "opentelemetry-okhttp-3.0", version.ref = "opentelemetry-instrumentation" }
opentelemetry-sdk = { group = "io.opentelemetry", name = "opentelemetry-sdk", version.ref = "opentelemetry" }

Environment
Compiler: (e.g., "Temurin 17.0.7")
Runtime version: 21.0.7+-13880790-b1038.58 aarch64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.

OS: (e.g., "Ubuntu 20.04")
macOS 15.6.1 (24G90)
Runtime (if different from JDK above): (e.g., "Oracle JRE 8u251")
OS (if different from OS compiled on): (e.g., "Windows Server 2019")

Additional context
Add any other context about the problem here.

Tip: React with 👍 to help prioritize this issue. Please use comments to provide useful context, avoiding +1 or me too, to help us triage it. Learn more here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions