Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Class not found error with opentelemetry zipkin tracing enabled for MI-4.3.0 #4029

Open
gayaldassanayake opened this issue Feb 18, 2025 · 0 comments
Labels

Comments

@gayaldassanayake
Copy link

Description

When trying to enable MI tracing with zipkin for MI-4.3.0, I get a ClassNotFoundException[1].

Note that this error is not available in 4.2.0. The missing class is from https://mvnrepository.com/artifact/io.zipkin.reporter2/zipkin-sender-okhttp3/2.17.2 jar. This is packed into the wso2-mi repo as an OSGI bundle via zipkin-sender-okhttp3:2.17.2-wso2v1. However since this is just an OSGI bundle actual classes are not packed here.

In wso2-mi:4.2.0, the actual jar is present in as wso2/components/plugins/io.zipkin.reporter2.zipkin-sender-okhttp3_2.16.3.jar. In 4.3.0 this jar has been removed for some reason.

[1]

Failed to initialize ESB due to a fatal error java.lang.NoClassDefFoundError: zipkin2/reporter/okhttp3/OkHttpSender
        at io.opentelemetry.exporter.zipkin.ZipkinSpanExporter.builder(ZipkinSpanExporter.java:270)
        at org.apache.synapse.aspects.flow.statistics.tracing.opentelemetry.management.ZipkinTelemetryManager.init(ZipkinTelemetryManager.java:58)
        at org.apache.synapse.aspects.flow.statistics.tracing.opentelemetry.OpenTelemetryManagerHolder.loadTracerConfigurations(OpenTelemetryManagerHolder.java:52)
        at org.apache.synapse.aspects.flow.statistics.collectors.RuntimeStatisticCollector.init(RuntimeStatisticCollector.java:118)
        at org.apache.synapse.ServerManager.init(ServerManager.java:115)
        at org.wso2.micro.integrator.initializer.ServiceBusInitializer.initESB(ServiceBusInitializer.java:380)
        at org.wso2.micro.integrator.initializer.ServiceBusInitializer.activate(ServiceBusInitializer.java:151)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:235)
        at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146)
        at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:345)
        at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620)
        at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197)
        at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:343)
        at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222)
        at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:113)
        at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:985)
        at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
        at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151)
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:866)
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:804)
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:228)
        at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:525)
        at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:544)
        at org.wso2.micro.integrator.ntask.core.internal.TasksDSComponent.activate(TasksDSComponent.java:147)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:260)
        at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146)
        at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:345)
        at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620)
        at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197)
        at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:473)
        at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:217)
        at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:816)
        at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:783)
        at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
        at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.ClassNotFoundException: zipkin2.reporter.okhttp3.OkHttpSender cannot be found by opentelemetry-all_1.11.0.wso2v6
        at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:461)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:423)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:415)
        at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:155)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
        ... 44 more

Steps to Reproduce

  1. Download wso2-mi 4.3.0 and extract the zip
  2. Run the relevant wso2update_ shell script within the bin/ directory (for macos, ./wso2update_darwin) to update the update tool
  3. Run the same update tool again to get the latest dependency versions.
  4. Add the following opentelemetry table to conf/deployment.toml.
    [opentelemetry]
    enable = true
    logs = true
    type = "zipkin"
    host = "localhost"
    port = 94
  5. Start the server by running sh bin/micro-integrator.sh. You will get the above-mentioned error.

Version

4.3.0

Environment Details (with versions)

MacOS 13.3.1 (22E261)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant