Shinyproxy doesn't shut the containers
I was trying the new version of shiny proxy 3.1.1 and when I log out from an initialized application the container is not removed. The setup is with podman instead of docker using this
docker:
internal-networking: false
url: http://localhost:2375
from here #385
Here is the log I got:
eu.openanalytics.containerproxy.ContainerProxyException: Failed to stop container
at eu.openanalytics.containerproxy.backend.AbstractContainerBackend.stopProxy(AbstractContainerBackend.java:145) ~[containerproxy-1.1.1.jar!/:1.1.1]
at eu.openanalytics.containerproxy.backend.dispatcher.DefaultProxyDispatcher.stopProxy(DefaultProxyDispatcher.java:54) ~[containerproxy-1.1.1.jar!/:1.1.1]
at eu.openanalytics.containerproxy.service.ProxyService.lambda$stopProxy$7(ProxyService.java:342) ~[containerproxy-1.1.1.jar!/:1.1.1]
at eu.openanalytics.containerproxy.service.ProxyService.lambda$action$12(ProxyService.java:638) ~[containerproxy-1.1.1.jar!/:1.1.1]
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[na:na]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na]
Caused by: org.mandas.docker.client.exceptions.DockerRequestException: Request error: GET http://localhost:2375/containers/94ee70a3d018494caa684179544ec41495622f544aab16bd525cc789aca45c72/json: 200
at org.mandas.docker.client.DefaultDockerClient.propagate(DefaultDockerClient.java:2564) ~[docker-client-7.0.8-OA-3.jar!/:na]
at org.mandas.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:2438) ~[docker-client-7.0.8-OA-3.jar!/:na]
at org.mandas.docker.client.DefaultDockerClient.inspectContainer(DefaultDockerClient.java:827) ~[docker-client-7.0.8-OA-3.jar!/:na]
at eu.openanalytics.containerproxy.backend.docker.DockerEngineBackend.doStopProxy(DockerEngineBackend.java:233) ~[containerproxy-1.1.1.jar!/:1.1.1]
at eu.openanalytics.containerproxy.backend.AbstractContainerBackend.stopProxy(AbstractContainerBackend.java:143) ~[containerproxy-1.1.1.jar!/:1.1.1]
... 8 common frames omitted
Caused by: jakarta.ws.rs.client.ResponseProcessingException: com.fasterxml.jackson.databind.JsonMappingException: Cannot invoke "java.lang.Iterable.iterator()" because "elements" is null
at [Source: (org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream); line: 1, column: 481] (through reference chain: org.mandas.docker.client.messages.ImmutableContainerInfo$Builder["State"]->org.mandas.docker.client.messages.ImmutableContainerState$Builder["Health"]->org.mandas.docker.client.messages.ImmutableContainerState$Health$Builder["Log"])
at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:760) ~[jersey-client-3.1.6.jar!/:na]
at org.glassfish.jersey.client.JerseyInvocation.lambda$invoke$1(JerseyInvocation.java:687) ~[jersey-client-3.1.6.jar!/:na]
at org.glassfish.jersey.client.JerseyInvocation.call(JerseyInvocation.java:709) ~[jersey-client-3.1.6.jar!/:na]
at org.glassfish.jersey.client.JerseyInvocation.lambda$runInScope$3(JerseyInvocation.java:703) ~[jersey-client-3.1.6.jar!/:na]
at org.glassfish.jersey.internal.Errors.process(Errors.java:292) ~[jersey-common-3.1.6.jar!/:na]
at org.glassfish.jersey.internal.Errors.process(Errors.java:274) ~[jersey-common-3.1.6.jar!/:na]
at org.glassfish.jersey.internal.Errors.process(Errors.java:205) ~[jersey-common-3.1.6.jar!/:na]
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:391) ~[jersey-common-3.1.6.jar!/:na]
at org.glassfish.jersey.client.JerseyInvocation.runInScope(JerseyInvocation.java:703) ~[jersey-client-3.1.6.jar!/:na]
at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:686) ~[jersey-client-3.1.6.jar!/:na]
at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:422) ~[jersey-client-3.1.6.jar!/:na]
at org.mandas.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:2436) ~[docker-client-7.0.8-OA-3.jar!/:na]
... 11 common frames omitted
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Cannot invoke "java.lang.Iterable.iterator()" because "elements" is null
at [Source: (org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream); line: 1, column: 481] (through reference chain: org.mandas.docker.client.messages.ImmutableContainerInfo$Builder["State"]->org.mandas.docker.client.messages.ImmutableContainerState$Builder["Health"]->org.mandas.docker.client.messages.ImmutableContainerState$Health$Builder["Log"])
at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:276) ~[jackson-databind-2.15.4.jar!/:2.15.4]
at com.fasterxml.jackson.databind.deser.SettableBeanProperty._throwAsIOE(SettableBeanProperty.java:630) ~[jackson-databind-2.15.4.jar!/:2.15.4]
at com.fasterxml.jackson.databind.deser.SettableBeanProperty._throwAsIOE(SettableBeanProperty.java:618) ~[jackson-databind-2.15.4.jar!/:2.15.4]
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeSetAndReturn(MethodProperty.java:173) ~[jackson-databind-2.15.4.jar!/:2.15.4]
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.vanillaDeserialize(BuilderBasedDeserializer.java:293) ~[jackson-databind-2.15.4.jar!/:2.15.4]
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.deserialize(BuilderBasedDeserializer.java:217) ~[jackson-databind-2.15.4.jar!/:2.15.4]
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeSetAndReturn(MethodProperty.java:158) ~[jackson-databind-2.15.4.jar!/:2.15.4]
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.vanillaDeserialize(BuilderBasedDeserializer.java:293) ~[jackson-databind-2.15.4.jar!/:2.15.4]
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.deserialize(BuilderBasedDeserializer.java:217) ~[jackson-databind-2.15.4.jar!/:2.15.4]
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeSetAndReturn(MethodProperty.java:158) ~[jackson-databind-2.15.4.jar!/:2.15.4]
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.vanillaDeserialize(BuilderBasedDeserializer.java:293) ~[jackson-databind-2.15.4.jar!/:2.15.4]
at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.deserialize(BuilderBasedDeserializer.java:217) ~[jackson-databind-2.15.4.jar!/:2.15.4]
at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323) ~[jackson-databind-2.15.4.jar!/:2.15.4]
at com.fasterxml.jackson.databind.ObjectReader._bind(ObjectReader.java:2079) ~[jackson-databind-2.15.4.jar!/:2.15.4]
at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1229) ~[jackson-databind-2.15.4.jar!/:2.15.4]
at org.glassfish.jersey.jackson.internal.jackson.jaxrs.base.ProviderBase.readFrom(ProviderBase.java:829) ~[jersey-media-json-jackson-3.1.6.jar!/:na]
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.invokeReadFrom(ReaderInterceptorExecutor.java:235) ~[jersey-common-3.1.6.jar!/:na]
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.java:214) ~[jersey-common-3.1.6.jar!/:na]
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:134) ~[jersey-common-3.1.6.jar!/:na]
at org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom(MessageBodyFactory.java:1072) ~[jersey-common-3.1.6.jar!/:na]
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:657) ~[jersey-common-3.1.6.jar!/:na]
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:591) ~[jersey-common-3.1.6.jar!/:na]
at org.glassfish.jersey.client.ClientResponse.readEntity(ClientResponse.java:298) ~[jersey-client-3.1.6.jar!/:na]
at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:757) ~[jersey-client-3.1.6.jar!/:na]
... 22 common frames omitted
Caused by: java.lang.NullPointerException: Cannot invoke "java.lang.Iterable.iterator()" because "elements" is null
at org.mandas.docker.client.messages.ImmutableContainerState$Health$Builder.addAllLog(ImmutableContainerState.java:1296) ~[docker-client-7.0.8-OA-3.jar!/:na]
at org.mandas.docker.client.messages.ImmutableContainerState$Health$Builder.log(ImmutableContainerState.java:1287) ~[docker-client-7.0.8-OA-3.jar!/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeSetAndReturn(MethodProperty.java:170) ~[jackson-databind-2.15.4.jar!/:2.15.4]
... 42 common frames omitted
2024-07-05T09:16:32.127Z INFO 1 --- [ProxyService-16] e.o.containerproxy.service.ProxyService : [user=me_me_but_me proxyId=8e2507f6-207e-4638-a044-8afd2fa71b4f specId=01_dashboard] Proxy released
Hi, at the time of writing ShinyProxy does not support podman. We hoped that we the release of 3.1.1 the support might be better (https://github.com/openanalytics/shinyproxy/issues/385#issuecomment-2202568900), however, looking at the above error, there are still some incompatibles between ShinyProxy and podman.
For the time being we advice to use Docker.
Hi
We're happy to announce that ShinyProxy 3.2.0 now supports podman. All our automated tests work on podman, and we also did lots of manual testing. Nevertheless, there could still be some minor compatibility issue. Please open an issue if you ran into this, we will be happy to fix it.
No special configuration is needed, just make sure podman expose the API as a regular docker socket.