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)