After the OpenTrace extension has been deployed within an APMIA instance, any attempt to send a trace span to APMIA results in the following error:
<head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/>
<title>Error 500 java.lang.NoClassDefFoundError: org/apache/thrift/TException</title>
</head>
<body><h2>HTTP ERROR 500 java.lang.NoClassDefFoundError: org/apache/thrift/TException</h2>
<table>
<tr><th>URI:</th><td>/open-tracing/spans/ingest</td></tr>
<tr><th>STATUS:</th><td>500</td></tr>
<tr><th>MESSAGE:</th><td>java.lang.NoClassDefFoundError: org/apache/thrift/TException</td></tr>
<tr><th>SERVLET:</th><td>OpenTracing</td></tr>
<tr><th>CAUSED BY:</th><td>java.lang.NoClassDefFoundError: org/apache/thrift/TException</td></tr>
<tr><th>CAUSED BY:</th><td>java.lang.ClassNotFoundException: org.apache.thrift.TException</td></tr>
</table>
<h3>Caused by:</h3><pre>java.lang.NoClassDefFoundError: org/apache/thrift/TException
at com.wily.introscope.agent.opentracing.ingestion.OpenTracingServlet.doPost(OpenTracingServlet.java:53)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656)
at com.wily.introscope.epagent.http.ServletFilter.doFilter(ServletFilter.java:33)
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.Server.handle(Server.java:516)
at com.wily.introscope.epagent.http.HttpServer$1.handle(HttpServer.java:105)
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.thrift.TException
at com.wily.util.extension.JarExtension$AllPermissionsClassLoader.findClass(JarExtension.java:326)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
... 32 more
</pre>
</body>
</html>
Based on the error message above, the Extension is unable to load the class "org.apache.thrift.TException". This particular class exists within the "opentracing-dd040260xt146-2023.8.1.6\lib\external\opentracing-api.jar" file, so clearly this .jar file is not being loaded.
I looked at the MANIFEST.MF file contained within the opentracing-dd040260xt146-2023.8.1.6\lib\opentracing.jar file and it revealed the following:
Manifest-Version: 1.0
Created-By: CA Technologies
Archiver-Version: Plexus Archiver
Built-By: jenkins
Build-Jdk: 11.0.5
Automatic-Module-Name: com.ca.apm.agent.extensions.opentracing
com-wily-Build: 990006
com-wily-Release: 2023.8.1
Class-Path: ../../../core/ext/lib/httpclient.jar ../../../core/ext/lib
/httpcore.jar ../../../core/ext/lib/commons-logging.jar
com-wily-Name: OpenTracing
com-wily-Extension-Type: Introscope-Agent
com-wily-Extension-Version: 1
com-wily-Extension-Plugins-List: OpenTracingService
com-wily-Extension-Name: OpenTracing
com-wily-Extension-Plugin-OpenTracingService-Name: Open Tracing Service
com-wily-Extension-Plugin-OpenTracingService-Type: service
com-wily-Extension-Plugin-OpenTracingService-Version: 2
com-wily-Extension-Plugin-OpenTracingService-Entry-Point-Class: com.wi
ly.introscope.agent.opentracing.OpenTracingService
com-wily-Extension-depends-on: Backend Protocol Support
Please note, in the Class-Path section, there is no reference to ANY of the .jar files contained within the opentracing-dd040260xt146-2023.8.1.6\lib\external folder.....including the opentracing-api.jar file.