Aled Sage created BROOKLYN-627:
----------------------------------

             Summary: kubernetes-client bundle initialisation fails
                 Key: BROOKLYN-627
                 URL: https://issues.apache.org/jira/browse/BROOKLYN-627
             Project: Brooklyn
          Issue Type: Bug
    Affects Versions: 1.1.0-SNAPSHOT
            Reporter: Aled Sage


Since merging [https://github.com/apache/brooklyn-server/pull/1090,] i.e. not 
yet in any official Brooklyn release.)

During startup, I've once seen this error with the rpm build on CentOS 7 (it's 
non-deterministic):
{noformat}
2020-05-11T11:15:05,661 - ERROR 354 i.f.kubernetes-client [tures-3-thread-1] 
bundle io.fabric8.kubernetes-client:4.9.0 
(354)[io.fabric8.kubernetes.client.osgi.ManagedKubernetesClient(3)] :  Error 
during instantiation of th
e implementation object
java.lang.reflect.InvocationTargetException: null
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
Method) ~[?:1.8.0_252]
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 ~[?:1.8.0_252]
        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 ~[?:1.8.0_252]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
~[?:1.8.0_252]
        at 
org.apache.felix.scr.impl.inject.ComponentConstructor.newInstance(ComponentConstructor.java:309)
 ~[?:?]
        at 
org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:277)
 ~[?:?]
        at 
org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:114)
 ~[?:?]
        at 
org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:982)
 ~[?:?]
        at 
org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:955)
 ~[?:?]
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:756)
 ~[?:?]
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:666)
 ~[?:?]
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:432)
 ~[?:?]
        at 
org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:665)
 ~[?:?]
        at 
org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:338)
 ~[?:?]
        at 
org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:382) ~[?:?]
        at org.apache.felix.scr.impl.Activator.access$200(Activator.java:49) 
~[?:?]
        at 
org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:264) 
~[?:?]
        at 
org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196)
 ~[?:?]
        at 
org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169)
 ~[?:?]
        at 
org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:49)
 ~[?:?]
        at 
org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:482)
 ~[osgi.core-6.0.0.jar:?]
        at 
org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:415)
 ~[osgi.core-6.0.0.jar:?]
        at 
org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232) 
~[osgi.core-6.0.0.jar:?]
        at 
org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444)
 ~[osgi.core-6.0.0.jar:?]
        at 
org.apache.felix.framework.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:915)
 ~[?:?]
        at 
org.apache.felix.framework.EventDispatcher.fireEventImmediately(EventDispatcher.java:834)
 ~[?:?]
        at 
org.apache.felix.framework.EventDispatcher.fireBundleEvent(EventDispatcher.java:516)
 ~[?:?]
        at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4579) 
~[?:?]
        at org.apache.felix.framework.Felix.startBundle(Felix.java:2174) ~[?:?]
        at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998) 
~[?:?]
        at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:984) 
~[?:?]
        at 
org.apache.karaf.features.internal.service.BundleInstallSupportImpl.startBundle(BundleInstallSupportImpl.java:165)
 ~[?:?]
        at 
org.apache.karaf.features.internal.service.FeaturesServiceImpl.startBundle(FeaturesServiceImpl.java:1153)
 ~[?:?]
        at 
org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:1036) 
~[?:?]
        at 
org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1062)
 ~[?:?]
        at 
org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:998)
 ~[?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
[?:1.8.0_252]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
[?:1.8.0_252]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
[?:1.8.0_252]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_252]
Caused by: java.lang.NoClassDefFoundError: okhttp3/Interceptor
        at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_252]
        at java.lang.ClassLoader.defineClass(ClassLoader.java:756) 
~[?:1.8.0_252]
        at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClass(BundleWiringImpl.java:2410)
 ~[?:?]
        at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2194)
 ~[?:?]
        at 
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1607)
 ~[?:?]
        at 
org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
 ~[?:?]
        at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
 ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_252]
        at 
org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1414)
 ~[?:?]
        at 
org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1660)
 ~[?:?]
        at 
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1590)
 ~[?:?]
        at 
org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
 ~[?:?]
        at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
 ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_252]
        at 
io.fabric8.kubernetes.client.utils.HttpClientUtils.createHttpClient(HttpClientUtils.java:118)
 ~[?:?]
        at 
io.fabric8.kubernetes.client.utils.HttpClientUtils.createHttpClient(HttpClientUtils.java:65)
 ~[?:?]
        at io.fabric8.kubernetes.client.BaseClient.<init>(BaseClient.java:51) 
~[?:?]
        at io.fabric8.kubernetes.client.BaseClient.<init>(BaseClient.java:43) 
~[?:?]
        at 
io.fabric8.kubernetes.client.osgi.ManagedKubernetesClient.<init>(ManagedKubernetesClient.java:141)
 ~[?:?]
        ... 40 more
Caused by: java.lang.ClassNotFoundException: okhttp3.Interceptor not found by 
wrap_file__opt_amp-5.5.0-SNAPSHOT_system_com_squareup_okhttp3_logging-interceptor_3.12.6_logging-interceptor-3.12.6.jar
 [373]
        at 
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1639)
 ~[?:?]
        at 
org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
 ~[?:?]
        at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
 ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_252]
        at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_252]
        at java.lang.ClassLoader.defineClass(ClassLoader.java:756) 
~[?:1.8.0_252]
        at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClass(BundleWiringImpl.java:2410)
 ~[?:?]
        at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2194)
 ~[?:?]
        at 
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1607)
 ~[?:?]
        at 
org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
 ~[?:?]
        at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
 ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_252]
        at 
org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1414)
 ~[?:?]
        at 
org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1660)
 ~[?:?]
        at 
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1590)
 ~[?:?]
        at 
org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
 ~[?:?]
        at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
 ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_252]
        at 
io.fabric8.kubernetes.client.utils.HttpClientUtils.createHttpClient(HttpClientUtils.java:118)
 ~[?:?]
        at 
io.fabric8.kubernetes.client.utils.HttpClientUtils.createHttpClient(HttpClientUtils.java:65)
 ~[?:?]
        at io.fabric8.kubernetes.client.BaseClient.<init>(BaseClient.java:51) 
~[?:?]
        at io.fabric8.kubernetes.client.BaseClient.<init>(BaseClient.java:43) 
~[?:?]
        at 
io.fabric8.kubernetes.client.osgi.ManagedKubernetesClient.<init>(ManagedKubernetesClient.java:141)
 ~[?:?]
        ... 40 more {noformat}
Looking at {{okhttp3.logging-interceptor}}, its import-package is optional: 
{{okhttp3;resolution:=optional}}. I'm guess that means the bundle can start 
before {{okhttp3}} bundle has been wrapped/started (hence the class not being 
available).

It's getting called during the bundle startup of 
{{io.fabric8.kubernetes-client}} because that bundle declares services. 
{{io.fabric8.kubernetes.client.utils.HttpClientUtils.createHttpClient:118}} 
references {{okhttp3.logging.HttpLoggingInterceptor}}, which triggers all this 
class loading.

But later in the startup log, there's no mention of rewiring 
{{okhttp3.logging-interceptor}} (which I'd expect if {{okhttp3}} package 
subsequently becomes available.

Requires further investigation!



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to