Giter Club home page Giter Club logo

Comments (10)

dmandalidis avatar dmandalidis commented on June 23, 2024 1

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.

dmandalidis avatar dmandalidis commented on June 23, 2024 1

Hi @tony-- , there's another fix coming for #88 which will result in 2.0.2 release. Stay tuned!

from docker-client.

dmandalidis avatar dmandalidis commented on June 23, 2024

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.

dmandalidis avatar dmandalidis commented on June 23, 2024

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.

ieggel avatar ieggel commented on June 23, 2024

Hi @dmandalidis

Great. Thank you so much. I'll test it tomorrow and give you feedback!
Cheers!

from docker-client.

ieggel avatar ieggel commented on June 23, 2024

@dmandalidis

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.

ieggel avatar ieggel commented on June 23, 2024

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.

tony-- avatar tony-- commented on June 23, 2024

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.

tony-- avatar tony-- commented on June 23, 2024

@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.

dmandalidis avatar dmandalidis commented on June 23, 2024

Hi @tony--

Please open another issue for this one

from docker-client.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.