You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When using Scala 2.13.x the akka-http-2.4.5 instrumentation doesn't apply due to this weave violation:
2021-03-25T13:43:37,490+0000 [1 24] com.newrelic FINEST: com.newrelic.instrumentation.akka-http-2.4.5 - 1 violations against classloader jdk.internal.loader.ClassLoaders$AppClassLoader@73d16e93
2021-03-25T13:43:37,490+0000 [1 24] com.newrelic FINEST: WeaveViolation: MISSING_ORIGINAL_BYTECODE
2021-03-25T13:43:37,490+0000 [1 24] com.newrelic FINEST: Class: scala/collection/immutable/StringOps
2021-03-25T13:43:37,490+0000 [1 24] com.newrelic FINEST: Reason: Could not find original bytecode
The result is that any transactions that are normally started by the Java agent from this instrumentation when akka.http.scaladsl.server.ContextWrapper.apply(AkkaHttpContextFunction.scala) is executed will not exist if using Scala 2.13.x.
The reason that the instrumentation no longer applies is due to refactoring where scala/collection/immutable/StringOps was refactored in Scala v2.13.0-M4 and now is found in scala/collection/StringOps.
The StringOps class wraps the scala implementation of java.lang.String which is scala.Predef.String. It appears that some magic happens behind the scenes where scala Strings are implicitly converted into instances of the StringOps class.
I’ve got a branch here that modifies the v6.4.2 agent branch and adds a new instrumentation module named akka-http-2.13_2.4.5 that should apply when using scala 2.13. It needs to be tested and cleaned up a bit before we can get it into an agent release.
When using Scala 2.13.x the
akka-http-2.4.5
instrumentation doesn't apply due to this weave violation:The result is that any transactions that are normally started by the Java agent from this instrumentation when
akka.http.scaladsl.server.ContextWrapper.apply(AkkaHttpContextFunction.scala)
is executed will not exist if using Scala 2.13.x.The reason that the instrumentation no longer applies is due to refactoring where
scala/collection/immutable/StringOps
was refactored in Scalav2.13.0-M4
and now is found in scala/collection/StringOps.The StringOps class wraps the scala implementation of
java.lang.String
which isscala.Predef.String
. It appears that some magic happens behind the scenes where scalaString
s are implicitly converted into instances of theStringOps
class.You can see the differences documented here:
We'll need to build a new version of the instrumentation from the Scala 2.13 dependency.
The text was updated successfully, but these errors were encountered: