Comments (10)
Hi,
Let's not dig further into this since the test errors seem to be as a configuration issue in your side (master build passes here). The com.kenai.jffi.Type
could be triggered by the update of jnr-unixsocket
dependency update, but since this hasn't been released yet I took a note to investigate this before releasing 3.0.0.
2.0.1 is out now containing the shading fix, please use that one and let me know if you face further issues.
from docker-client.
Hi @tony-- , there's another fix coming for #88 which will result in 2.0.2 release. Stay tuned!
from docker-client.
Hi, thanks for reaching out.
This must be probably triggered by the update of jersey-client to 2.28. The javax.ws.rs.core
package is now included in a different group id (jakarta.ws.rs
). This is not handled by the current configuration and it's certainly a problem and I verified locally that Configurable
is now included in the shaded jar.
Have to test it a little bit though since other artifacts may be affected as well (unless you can grab the branch referenced in the PR, build it and test it locally)
from docker-client.
Hi again,
Just tested it with a sample spring-boot project and I 've managed to list the containers in my docker host. Therefore, I assume we 're ok. Closing this issue, patch release 2.0.1 by tomorrow.
Thanks
from docker-client.
Hi @dmandalidis
Great. Thank you so much. I'll test it tomorrow and give you feedback!
Cheers!
from docker-client.
I actually tried it out myself now. I cloned the repo and build it with maven from the master branch. However there were some tests that did not pass.
Failed tests:
Failed tests:
DefaultDockerClientTest.testContainerWithMemoryOptions:1857
Expected: <33554432L>
but: was <-1L>
DefaultDockerClientTest.testContainerWithAppArmorLogs:1890
Expected: ""
but: was "unconfined"
DefaultDockerClientTest.testListTasks:5063
Expected: is <0>
but: was <5>
DefaultDockerClientTest.testInspectServiceEndpoint:4955
Expected: iterable over [<PortConfig{name=web, protocol=tcp, targetPort=80, publishedPort=8080, publishMode=INGRESS}>, <PortConfig{name=null, protocol=tcp, targetPort=22, publishedPort=null, publishMode=HOST}>] in any order
but: No item matches: <PortConfig{name=web, protocol=tcp, targetPort=80, publishedPort=8080, publishMode=INGRESS}>, <PortConfig{name=null, protocol=tcp, targetPort=22, publishedPort=null, publishMode=HOST}> in []
Tests in error:
DefaultDockerClientTest.testSsl:2426 » Docker java.util.concurrent.ExecutionEx...
DefaultDockerClientTest.testNetworksConnectContainerWithEndpointConfig:3829 » DockerRequest
I then built it without the tests with mvn -Dmaven.test.skip=true package
and referenced docker-client-3.0.0-SNAPSHOT-sources.jar
in my project. The application now starts, however throws the following Exception: java.lang.ClassNotFoundException: com.kenai.jffi.Type
I am not sure if those failed test have anything to do with the errors i get during execution.
The exception is thrown here in my code:
//Constructor
public BasicDockerClientService(){
try {
docker = DefaultDockerClient.fromEnv().build();
//Exception is thrown here
System.out.println(docker.info().toString());
}
...
Here the stacktrace:
org.mandas.docker.client.exceptions.DockerException: java.util.concurrent.ExecutionException: org.mandas.docker.client.shaded.javax.ws.rs.ProcessingException: java.lang.UnsatisfiedLinkError: could not load FFI provider org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.Provider
at org.mandas.docker.client.DefaultDockerClient.propagate(DefaultDockerClient.java:2788)
at org.mandas.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:2652)
at org.mandas.docker.client.DefaultDockerClient.info(DefaultDockerClient.java:612)
at ch.hevs.medgift.eaasy.swarmbackend.docker.BasicDockerClientService.<init>(BasicDockerClientService.java:28)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:172)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1262)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1164)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:273)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1239)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1166)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:593)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1378)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:575)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:273)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1239)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1166)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:593)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1378)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:575)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:273)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1239)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1166)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:593)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1378)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:575)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:846)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:863)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:316)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
at ch.hevs.medgift.eaasy.swarmbackend.EaasySwarmBackendApplication.main(EaasySwarmBackendApplication.java:10)
Caused by: java.util.concurrent.ExecutionException: org.mandas.docker.client.shaded.javax.ws.rs.ProcessingException: java.lang.UnsatisfiedLinkError: could not load FFI provider org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.Provider
at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1895)
at org.mandas.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:2650)
... 65 more
Caused by: org.mandas.docker.client.shaded.javax.ws.rs.ProcessingException: java.lang.UnsatisfiedLinkError: could not load FFI provider org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.Provider
at org.mandas.docker.client.shaded.org.glassfish.jersey.client.ClientRuntime.processFailure(ClientRuntime.java:207)
at org.mandas.docker.client.shaded.org.glassfish.jersey.client.ClientRuntime.access$100(ClientRuntime.java:61)
at org.mandas.docker.client.shaded.org.glassfish.jersey.client.ClientRuntime$2.lambda$failure$1(ClientRuntime.java:159)
at org.mandas.docker.client.shaded.org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
at org.mandas.docker.client.shaded.org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
at org.mandas.docker.client.shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:292)
at org.mandas.docker.client.shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:274)
at org.mandas.docker.client.shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:244)
at org.mandas.docker.client.shaded.org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:288)
at org.mandas.docker.client.shaded.org.glassfish.jersey.client.ClientRuntime$2.failure(ClientRuntime.java:159)
at org.mandas.docker.client.shaded.org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:483)
at org.mandas.docker.client.shaded.org.glassfish.jersey.client.ClientRuntime.lambda$null$3(ClientRuntime.java:163)
at org.mandas.docker.client.shaded.org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
at org.mandas.docker.client.shaded.org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
at org.mandas.docker.client.shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:292)
at org.mandas.docker.client.shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:274)
at org.mandas.docker.client.shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:244)
at org.mandas.docker.client.shaded.org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:288)
at org.mandas.docker.client.shaded.org.glassfish.jersey.client.ClientRuntime.lambda$createRunnableForAsyncProcessing$4(ClientRuntime.java:139)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.UnsatisfiedLinkError: could not load FFI provider org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.Provider
at org.mandas.docker.client.shaded.jnr.ffi.provider.InvalidProvider$1.loadLibrary(InvalidProvider.java:48)
at org.mandas.docker.client.shaded.jnr.ffi.LibraryLoader.load(LibraryLoader.java:325)
at org.mandas.docker.client.shaded.jnr.unixsocket.Native.<clinit>(Native.java:80)
at org.mandas.docker.client.shaded.jnr.unixsocket.UnixSocketChannel.<init>(UnixSocketChannel.java:101)
at org.mandas.docker.client.shaded.jnr.unixsocket.UnixSocketChannel.open(UnixSocketChannel.java:60)
at org.mandas.docker.client.UnixConnectionSocketFactory.createSocket(UnixConnectionSocketFactory.java:69)
at org.mandas.docker.client.UnixConnectionSocketFactory.createSocket(UnixConnectionSocketFactory.java:44)
at org.mandas.docker.client.shaded.org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:118)
at org.mandas.docker.client.shaded.org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
at org.mandas.docker.client.shaded.org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
at org.mandas.docker.client.shaded.org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
at org.mandas.docker.client.shaded.org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
at org.mandas.docker.client.shaded.org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
at org.mandas.docker.client.shaded.org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.mandas.docker.client.shaded.org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
at org.mandas.docker.client.shaded.org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:71)
at org.mandas.docker.client.shaded.org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:426)
at org.mandas.docker.client.shaded.org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:479)
... 13 more
Caused by: java.lang.NoClassDefFoundError: com/kenai/jffi/Type
at org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.NativeRuntime.jafflType(NativeRuntime.java:193)
at org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.NativeRuntime.buildTypeMap(NativeRuntime.java:76)
at org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.NativeRuntime.<init>(NativeRuntime.java:57)
at org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.NativeRuntime.<init>(NativeRuntime.java:41)
at org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.NativeRuntime$SingletonHolder.<clinit>(NativeRuntime.java:53)
at org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.NativeRuntime.getInstance(NativeRuntime.java:49)
at org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.Provider.<init>(Provider.java:29)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at org.mandas.docker.client.shaded.jnr.ffi.provider.FFIProvider$SystemProviderSingletonHolder.getInstance(FFIProvider.java:68)
at org.mandas.docker.client.shaded.jnr.ffi.provider.FFIProvider$SystemProviderSingletonHolder.<clinit>(FFIProvider.java:57)
at org.mandas.docker.client.shaded.jnr.ffi.provider.FFIProvider.getSystemProvider(FFIProvider.java:35)
at org.mandas.docker.client.shaded.jnr.ffi.LibraryLoader.create(LibraryLoader.java:73)
at org.mandas.docker.client.shaded.jnr.unixsocket.Native.<clinit>(Native.java:76)
... 28 more
Caused by: java.lang.ClassNotFoundException: com.kenai.jffi.Type
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 45 more
from docker-client.
Thank you @dmandalidis !
Yes, i think the tests did not pass because I already had a swarm running locally with some services.
I now tested your new release.
Regarding the java.lang.NoClassDefFoundError: org/mandas/docker/client/shaded/javax/ws/rs/core/Configurable
: I can confirm this is not happening anymore.
However i got another error when trying to read the service logs. Will create another issue for it.
Thanks for all your effort!
from docker-client.
Thanks for the release - I was running into the same issues and was planning on digging in today. So nice to have them already fixed! 🤞
from docker-client.
@ieggel @dmandalidis I think I am running into something similar to Ivan
java.util.concurrent.ExecutionException: org.mandas.docker.client.shaded.javax.ws.rs.ProcessingException: java.lang.UnsatisfiedLinkError: could not load FFI provider org.mandas.docker.client.shaded.jnr.ffi.provider.jffi.Provider
from docker-client.
Hi @tony--
Please open another issue for this one
from docker-client.
Related Issues (20)
- Support swarm jobs
- Support job status for swarm jobs
- Mark deprecations of v1.41
- Support CgroupVersion from `/info`
- Support OSVersion in `/info`
- [resteasy] Reading events without `until` parameter blocks indefinitely on close HOT 2
- conflicting jaxrs/jersey versions in 5.x HOT 1
- [BUG] NetworkingConfig has no builder
- Update to JAX-RS 3
- Wrong version of JAXRS API
- ContainerStats no longer works with 5.0.1 HOT 3
- Commons base 64 import without dependency (assumes it comes with jersey)? HOT 3
- ContainerInspect on PortBindings throws NullPointerException on Podman Installation HOT 5
- Capabilities should be a list of lists of strings HOT 1
- Error response body from docker deamon is not propagated to DockerRequestException HOT 2
- Can't connect via unix socket when Java http proxy is set HOT 5
- Service Removal in Docker Client Library Ignoring Stop Grace Period in Docker Swarm HOT 1
- Dropping dependency on jnr-unixsocket HOT 3
- Container and ContainerConfig fields in Image inspect removed HOT 2
- Example of configuring container with host network
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from docker-client.