shinyproxy icon indicating copy to clipboard operation
shinyproxy copied to clipboard

Shinyproxy doesn't shut the containers

Open ConYel opened this issue 1 year ago • 1 comments

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

ConYel avatar Jul 05 '24 09:07 ConYel

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.

LEDfan avatar Jul 29 '24 08:07 LEDfan

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.

LEDfan avatar Jul 08 '25 07:07 LEDfan