hypertrace / javaagent

Hypertrace OpenTelemetry Java agent with payload/body and headers data capture.
Apache License 2.0
33 stars 15 forks source link

Fix classloading issue: put object holders into bootstrap classloader #256

Closed pavolloffay closed 3 years ago

pavolloffay commented 3 years ago

Signed-off-by: Pavol Loffay p.loffay@gmail.com

This fixes issue:

java.lang.ClassCastException: class io.opentelemetry.javaagent.instrumentation.hypertrace.servlet.v3_0.nowrapping.request.RequestStreamReaderHolder cannot be cast to class io.opentelemetry.javaagent.instrumentation.hypertrace.servlet.v3_0.nowrapping.request.RequestStreamReaderHolder (io.opentelemetry.javaagent.instrumentation.hypertrace.servlet.v3_0.nowrapping.request.RequestStreamReaderHolder is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @3ec62141; io.opentelemetry.javaagent.instrumentation.hypertrace.servlet.v3_0.nowrapping.request.RequestStreamReaderHolder is in unnamed module of loader java.net.URLClassLoader @389a5022)

for spark Java deployed on Tomcat. The RequestStreamReaderHolder is created in Filter.doFilter and then it fails in HttpServletRequest.getInputStream() when the object is accessed from the instrumentation context.