Skip to content

aws-resources: Execution error (ClassNotFoundException): okhttp3.RequestBody #2058

@danielcompton

Description

@danielcompton

Component(s)

aws-resources

What happened?

Description

I updated aws-resources from 1.47.0-alpha to 1.48.0-alpha and found that it was crashing when trying to create an EcsResource. I think this may be because OkHttp3 has been updated to 5 but breaking changes weren't fixed?

8add72d

I'm not exactly sure, but that seems like the most probable cause to me.

Steps to Reproduce

Sorry for the Clojure flavoured repro instructions, hopefully it is clear enough what is happening.

With 1.48.0-alpha

$ clj -Sdeps '{:deps {org.clojure/clojure {:mvn/version "RELEASE"} io.opentelemetry.contrib/opentelemetry-aws-resources {:mvn/version "1.48.0-alpha"}}}'
Clojure 1.12.1
user=> (import 'io.opentelemetry.contrib.aws.resource.EcsResource)
io.opentelemetry.contrib.aws.resource.EcsResource
user=> (io.opentelemetry.contrib.aws.resource.EcsResource/get)
Execution error (ClassNotFoundException) at jdk.internal.loader.BuiltinClassLoader/loadClass (BuiltinClassLoader.java:580).
okhttp3.RequestBody

vs 1.47.0-alpha:

clj -Sdeps '{:deps {org.clojure/clojure {:mvn/version "RELEASE"} io.opentelemetry.contrib/opentelemetry-aws-resources {:mvn/version "1.47.0-alpha"}}}'
Clojure 1.12.1
user=> (import 'io.opentelemetry.contrib.aws.resource.EcsResource)
io.opentelemetry.contrib.aws.resource.EcsResource
user=> (io.opentelemetry.contrib.aws.resource.EcsResource/get)
#object[io.opentelemetry.sdk.resources.AutoValue_Resource 0x48c3205a "Resource{schemaUrl=null, attributes={}}"]

Expected Result

An EcsResource is returned.

Actual Resul

A ClassNotFoundException exception is thrown.

Component version

1.48.0-alpha

Log output

user=> *e
#error {
 :cause "okhttp3.RequestBody"
 :via
 [{:type java.lang.NoClassDefFoundError
   :message "okhttp3/RequestBody"
   :at [io.opentelemetry.contrib.aws.resource.SimpleHttpClient <clinit> "SimpleHttpClient.java" 37]}
  {:type java.lang.ClassNotFoundException
   :message "okhttp3.RequestBody"
   :at [jdk.internal.loader.BuiltinClassLoader loadClass "BuiltinClassLoader.java" 580]}]
 :trace
 [[jdk.internal.loader.BuiltinClassLoader loadClass "BuiltinClassLoader.java" 580]
  [java.lang.ClassLoader loadClass "ClassLoader.java" 490]
  [io.opentelemetry.contrib.aws.resource.SimpleHttpClient <clinit> "SimpleHttpClient.java" 37]
  [io.opentelemetry.contrib.aws.resource.EcsResource buildResource "EcsResource.java" 69]
  [io.opentelemetry.contrib.aws.resource.EcsResource <clinit> "EcsResource.java" 58]
  [user$eval136 invokeStatic "NO_SOURCE_FILE" 1]
  [user$eval136 invoke "NO_SOURCE_FILE" 1]
  [clojure.lang.Compiler eval "Compiler.java" 7739]
  [clojure.lang.Compiler eval "Compiler.java" 7694]
  [clojure.core$eval invokeStatic "core.clj" 3232]
  [clojure.core$eval invoke "core.clj" 3228]
  [clojure.main$repl$read_eval_print__9248$fn__9251 invoke "main.clj" 437]
  [clojure.main$repl$read_eval_print__9248 invoke "main.clj" 437]
  [clojure.main$repl$fn__9257 invoke "main.clj" 459]
  [clojure.main$repl invokeStatic "main.clj" 459]
  [clojure.main$repl_opt invokeStatic "main.clj" 523]
  [clojure.main$main invokeStatic "main.clj" 668]
  [clojure.main$main doInvoke "main.clj" 617]
  [clojure.lang.RestFn invoke "RestFn.java" 400]
  [clojure.lang.AFn applyToHelper "AFn.java" 152]
  [clojure.lang.RestFn applyTo "RestFn.java" 135]
  [clojure.lang.Var applyTo "Var.java" 707]
  [clojure.main main "main.java" 40]]}

Additional context

Related: #863

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions