[
https://issues.apache.org/jira/browse/BROOKLYN-627?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Aled Sage resolved BROOKLYN-627.
--------------------------------
Fix Version/s: 1.1.0-SNAPSHOT
Assignee: Aled Sage
Resolution: Fixed
> 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
> Assignee: Aled Sage
> Priority: Major
> Fix For: 1.1.0-SNAPSHOT
>
>
> 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)