ShinyProxy 3.0.1 restart fails with 'Redis store does not support allocating existing ports.'

When restarting ShinyProxy 3.0.1 we see

May 17 09:57:08 SERVER systemd[1]: Stopping ShinyProxy...
May 17 09:57:08 SERVER java[625]: 2023-05-17 09:57:08.879  INFO 625 --- [ionShutdownHook] io.undertow                              : stopping server: Undertow - 2.2.21.Final
May 17 09:57:08 SERVER java[625]: 2023-05-17 09:57:08.887  INFO 625 --- [ionShutdownHook] io.undertow.servlet                      : Destroying Spring FrameworkServlet 'dispatcherServlet'
May 17 09:57:08 SERVER java[625]: 2023-05-17 09:57:08.896  INFO 625 --- [ionShutdownHook] io.undertow                              : stopping server: Undertow - 2.2.21.Final
May 17 09:57:08 SERVER java[625]: 2023-05-17 09:57:08.924  INFO 625 --- [ionShutdownHook] io.undertow.servlet                      : Destroying Spring FrameworkServlet 'dispatcherServlet'
May 17 09:57:08 SERVER java[625]: 2023-05-17 09:57:08.928  INFO 625 --- [ionShutdownHook] o.s.i.endpoint.EventDrivenConsumer       : Removing {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the 'errorChannel' channel
May 17 09:57:08 SERVER java[625]: 2023-05-17 09:57:08.929  INFO 625 --- [ionShutdownHook] o.s.i.channel.PublishSubscribeChannel    : Channel 'ShinyProxy.errorChannel' has 0 subscriber(s).
May 17 09:57:08 SERVER java[625]: 2023-05-17 09:57:08.930  INFO 625 --- [ionShutdownHook] o.s.i.endpoint.EventDrivenConsumer       : stopped bean '_org.springframework.integration.errorLogger'
May 17 09:57:08 SERVER java[625]: 2023-05-17 09:57:08.933  WARN 625 --- [ck-leadership-1] o.s.i.s.l.LockRegistryLeaderInitiator    : Error publishing OnRevoked event.
May 17 09:57:08 SERVER java[625]: java.lang.IllegalStateException: UT015023: This Context has been already destroyed
May 17 09:57:08 SERVER java[625]:         at io.undertow.servlet.spec.ServletContextImpl.getDeploymentInfo(ServletContextImpl.java:211) ~[undertow-servlet-2.2.21.Final.jar!/:2.2.21.Final]
May 17 09:57:08 SERVER java[625]:         at io.undertow.servlet.spec.ServletContextImpl.getInitParameter(ServletContextImpl.java:450) ~[undertow-servlet-2.2.21.Final.jar!/:2.2.21.Final]
May 17 09:57:08 SERVER java[625]:         at org.springframework.web.context.support.ServletContextPropertySource.getProperty(ServletContextPropertySource.java:47) ~[spring-web-5.3.24.jar!/:5.3.24]
May 17 09:57:08 SERVER java[625]:         at org.springframework.web.context.support.ServletContextPropertySource.getProperty(ServletContextPropertySource.java:33) ~[spring-web-5.3.24.jar!/:5.3.24]
May 17 09:57:08 SERVER java[625]:         at org.springframework.core.env.PropertySourcesPropertyResolver.getProperty(PropertySourcesPropertyResolver.java:85) ~[spring-core-5.3.24.jar!/:5.3.24]
May 17 09:57:08 SERVER java[625]:         at org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertyResolver$DefaultResolver.getProperty(ConfigurationPropertySourcesPropertyResolver.java:123) ~[spring-boot-2.7.6.jar!/:2.7.6]
May 17 09:57:08 SERVER java[625]:         at org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertyResolver.findPropertyValue(ConfigurationPropertySourcesPropertyResolver.java:97) ~[spring-boot-2.7.6.jar!/:2.7.6]
May 17 09:57:08 SERVER java[625]:         at org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertyResolver.getProperty(ConfigurationPropertySourcesPropertyResolver.java:74) ~[spring-boot-2.7.6.jar!/:2.7.6]
May 17 09:57:08 SERVER java[625]:         at org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertyResolver.getProperty(ConfigurationPropertySourcesPropertyResolver.java:60) ~[spring-boot-2.7.6.jar!/:2.7.6]
May 17 09:57:08 SERVER java[625]:         at org.springframework.core.env.AbstractEnvironment.getProperty(AbstractEnvironment.java:594) ~[spring-core-5.3.24.jar!/:5.3.24]
May 17 09:57:08 SERVER java[625]:         at eu.openanalytics.containerproxy.service.UserService.getAdminGroups(UserService.java:95) ~[containerproxy-1.0.1.jar!/:1.0.1]
May 17 09:57:08 SERVER java[625]:         at eu.openanalytics.containerproxy.service.UserService.isAdmin(UserService.java:128) ~[containerproxy-1.0.1.jar!/:1.0.1]
May 17 09:57:08 SERVER java[625]:         at eu.openanalytics.containerproxy.service.UserService.isAdmin(UserService.java:124) ~[containerproxy-1.0.1.jar!/:1.0.1]
May 17 09:57:08 SERVER java[625]:         at eu.openanalytics.containerproxy.service.ProxyService.getProxies(ProxyService.java:210) ~[containerproxy-1.0.1.jar!/:1.0.1]
May 17 09:57:08 SERVER java[625]:         at eu.openanalytics.containerproxy.service.LogService.stopService(LogService.java:187) ~[containerproxy-1.0.1.jar!/:1.0.1]
May 17 09:57:08 SERVER java[625]:         at eu.openanalytics.containerproxy.service.LogService.onLeaderRevoked(LogService.java:160) ~[containerproxy-1.0.1.jar!/:1.0.1]
May 17 09:57:08 SERVER java[625]:         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
May 17 09:57:08 SERVER java[625]:         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
May 17 09:57:08 SERVER java[625]:         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
May 17 09:57:08 SERVER java[625]:         at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
May 17 09:57:08 SERVER java[625]:         at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:344) ~[spring-context-5.3.24.jar!/:5.3.24]
May 17 09:57:08 SERVER java[625]:         at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:229) ~[spring-context-5.3.24.jar!/:5.3.24]
May 17 09:57:08 SERVER java[625]:         at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:166) ~[spring-context-5.3.24.jar!/:5.3.24]
May 17 09:57:08 SERVER java[625]:         at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.24.jar!/:5.3.24]
May 17 09:57:08 SERVER java[625]:         at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.24.jar!/:5.3.24]
May 17 09:57:08 SERVER java[625]:         at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.24.jar!/:5.3.24]
May 17 09:57:08 SERVER java[625]:         at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421) ~[spring-context-5.3.24.jar!/:5.3.24]
May 17 09:57:08 SERVER java[625]:         at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378) ~[spring-context-5.3.24.jar!/:5.3.24]
May 17 09:57:08 SERVER java[625]:         at org.springframework.integration.leader.event.DefaultLeaderEventPublisher.publishOnRevoked(DefaultLeaderEventPublisher.java:60) ~[spring-integration-core-5.5.15.jar!/:5.5.15]
May 17 09:57:08 SERVER java[625]:         at org.springframework.integration.support.leader.LockRegistryLeaderInitiator$LeaderSelector.handleRevoked(LockRegistryLeaderInitiator.java:493) ~[spring-integration-core-5.5.15.jar!/:5.5.15]
May 17 09:57:08 SERVER java[625]:         at org.springframework.integration.support.leader.LockRegistryLeaderInitiator$LeaderSelector.handleLockException(LockRegistryLeaderInitiator.java:432) ~[spring-integration-core-5.5.15.jar!/:5.5.15]
May 17 09:57:08 SERVER java[625]:         at org.springframework.integration.support.leader.LockRegistryLeaderInitiator$LeaderSelector.call(LockRegistryLeaderInitiator.java:360) ~[spring-integration-core-5.5.15.jar!/:5.5.15]
May 17 09:57:08 SERVER java[625]:         at org.springframework.integration.support.leader.LockRegistryLeaderInitiator$LeaderSelector.call(LockRegistryLeaderInitiator.java:337) ~[spring-integration-core-5.5.15.jar!/:5.5.15]
May 17 09:57:08 SERVER java[625]:         at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
May 17 09:57:08 SERVER java[625]:         at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na]
May 17 09:57:08 SERVER java[625]:         at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]
May 17 09:57:08 SERVER java[625]:         at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
May 17 09:57:08 SERVER java[625]: 2023-05-17 09:57:08.947  WARN 625 --- [ionShutdownHook] .s.c.a.CommonAnnotationBeanPostProcessor : Destroy method on bean with name 'logService' threw an exception: java.lang.IllegalStateException: UT015023: This Context has been already destroyed
May 17 09:57:09 SERVER systemd[1]: shinyproxy.service: Main process exited, code=exited, status=143/n/a
May 17 09:57:09 SERVER systemd[1]: shinyproxy.service: Failed with result 'exit-code'.
May 17 09:57:09 SERVER systemd[1]: Stopped ShinyProxy.
May 17 09:57:09 SERVER systemd[1]: shinyproxy.service: Consumed 2min 53.790s CPU time.
May 17 09:57:09 SERVER systemd[1]: Started ShinyProxy.
May 17 09:57:11 SERVER java[89308]:   .   ____          _            __ _ _
May 17 09:57:11 SERVER java[89308]:  /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
May 17 09:57:11 SERVER java[89308]: ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
May 17 09:57:11 SERVER java[89308]:  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
May 17 09:57:11 SERVER java[89308]:   '  |____| .__|_| |_|_| |_\__, | / / / /
May 17 09:57:11 SERVER java[89308]:  =========|_|==============|___/=/_/_/_/
May 17 09:57:11 SERVER java[89308]:  :: Spring Boot ::                (v2.7.6)
May 17 09:57:14 SERVER java[89308]: 2023-05-17 09:57:14.369  INFO 89308 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode
May 17 09:57:14 SERVER java[89308]: 2023-05-17 09:57:14.375  INFO 89308 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
May 17 09:57:14 SERVER java[89308]: 2023-05-17 09:57:14.485  INFO 89308 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 75 ms. Found 0 Redis repository interfaces.
May 17 09:57:14 SERVER java[89308]: 2023-05-17 09:57:14.606  INFO 89308 --- [           main] faultConfiguringBeanFactoryPostProcessor : No bean named 'errorChannel' has been explicitly defined. Therefore, a default PublishSubscribeChannel will be created.
May 17 09:57:14 SERVER java[89308]: 2023-05-17 09:57:14.620  INFO 89308 --- [           main] faultConfiguringBeanFactoryPostProcessor : No bean named 'integrationHeaderChannelRegistry' has been explicitly defined. Therefore, a default DefaultHeaderChannelRegistry will be created.
May 17 09:57:14 SERVER java[89308]: 2023-05-17 09:57:14.875  INFO 89308 --- [           main] e.o.c.stat.StatCollectorFactory          : Enabled. Sending usage statistics to micrometer.
May 17 09:57:15 SERVER java[89308]: 2023-05-17 09:57:15.113  INFO 89308 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.integration.config.IntegrationManagementConfiguration' of type [org.springframework.integration.config.IntegrationManagementConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
May 17 09:57:15 SERVER java[89308]: 2023-05-17 09:57:15.122  INFO 89308 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'integrationChannelResolver' of type [org.springframework.integration.support.channel.BeanFactoryChannelResolver] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
May 17 09:57:15 SERVER java[89308]: 2023-05-17 09:57:15.599  WARN 89308 --- [           main] io.undertow.websockets.jsr               : UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used
May 17 09:57:15 SERVER java[89308]: 2023-05-17 09:57:15.629  INFO 89308 --- [           main] io.undertow.servlet                      : Initializing Spring embedded WebApplicationContext
May 17 09:57:15 SERVER java[89308]: 2023-05-17 09:57:15.630  INFO 89308 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 3379 ms
May 17 09:57:17 SERVER java[89308]: 2023-05-17 09:57:17.645  INFO 89308 --- [           main] o.s.boot.web.servlet.RegistrationBean    : Filter orderedFormContentFilter was not registered (disabled)
May 17 09:57:18 SERVER java[89308]: 2023-05-17 09:57:18.204  WARN 89308 --- [           main] org.thymeleaf.templatemode.TemplateMode  : [THYMELEAF][main] Template Mode 'HTML5' is deprecated. Using Template Mode 'HTML' instead.
May 17 09:57:18 SERVER java[89308]: 2023-05-17 09:57:18.501  INFO 89308 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@6ecdbab8, org.springframework.security.web.session.ForceEagerSessionCreationFilter@3dd4a6fa, org.springframework.security.web.session.ForceEagerSessionCreationFilter@750ff7d3, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@19f7222e, org.springframework.security.web.context.SecurityContextPersistenceFilter@63b3ee82, org.springframework.security.web.header.HeaderWriterFilter@e042c99, org.springframework.security.web.csrf.CsrfFilter@5d425813, org.springframework.security.web.authentication.logout.LogoutFilter@10823d72, org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestRedirectFilter@5a2fa51f, org.springframework.security.oauth2.client.web.OAuth2LoginAuthenticationFilter@71945bc0, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@9aa2002, eu.openanalytics.containerproxy.auth.impl.oidc.OpenIdReAuthorizeFilter@30a7c98f, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@3f725306, eu.openanalytics.containerproxy.util.AppRecoveryFilter@3b95d13c, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@7c8d5312, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@2b34e38c, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@3c69362a, org.springframework.security.web.session.SessionManagementFilter@42b6d0cc, org.springframework.security.web.access.ExceptionTranslationFilter@6b52dd31, eu.openanalytics.shinyproxy.AuthenticationRequiredFilter@2412a42b, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@78c1372d]
May 17 09:57:18 SERVER java[89308]: 2023-05-17 09:57:18.698  INFO 89308 --- [           main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page template: index
May 17 09:57:20 SERVER java[89308]: 2023-05-17 09:57:20.017  INFO 89308 --- [           main] o.s.l.c.support.AbstractContextSource    : Property 'userDn' not set - anonymous context will be used for read-write operations
May 17 09:57:20 SERVER java[89308]: 2023-05-17 09:57:20.485  INFO 89308 --- [           main] o.s.i.endpoint.EventDrivenConsumer       : Adding {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the 'errorChannel' channel
May 17 09:57:20 SERVER java[89308]: 2023-05-17 09:57:20.486  INFO 89308 --- [           main] o.s.i.channel.PublishSubscribeChannel    : Channel 'ShinyProxy.errorChannel' has 1 subscriber(s).
May 17 09:57:20 SERVER java[89308]: 2023-05-17 09:57:20.486  INFO 89308 --- [           main] o.s.i.endpoint.EventDrivenConsumer       : started bean '_org.springframework.integration.errorLogger'
May 17 09:57:20 SERVER java[89308]: 2023-05-17 09:57:20.539  INFO 89308 --- [           main] io.undertow                              : starting server: Undertow - 2.2.21.Final
May 17 09:57:20 SERVER java[89308]: 2023-05-17 09:57:20.575  INFO 89308 --- [           main] org.xnio                                 : XNIO version 3.8.8.Final
May 17 09:57:20 SERVER java[89308]: 2023-05-17 09:57:20.642  INFO 89308 --- [           main] org.xnio.nio                             : XNIO NIO Implementation Version 3.8.8.Final
May 17 09:57:20 SERVER java[89308]: 2023-05-17 09:57:20.879  INFO 89308 --- [           main] org.jboss.threads                        : JBoss Threads version 3.1.0.Final
May 17 09:57:21 SERVER java[89308]: 2023-05-17 09:57:21.017  INFO 89308 --- [           main] o.s.b.w.e.undertow.UndertowWebServer     : Undertow started on port(s) 8080 (http)
May 17 09:57:21 SERVER java[89308]: 2023-05-17 09:57:21.300  INFO 89308 --- [           main] io.undertow.servlet                      : Initializing Spring embedded WebApplicationContext
May 17 09:57:21 SERVER java[89308]: 2023-05-17 09:57:21.300  INFO 89308 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 246 ms
May 17 09:57:21 SERVER java[89308]: 2023-05-17 09:57:21.320  INFO 89308 --- [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 3 endpoint(s) beneath base path '/actuator'
May 17 09:57:21 SERVER java[89308]: 2023-05-17 09:57:21.554  INFO 89308 --- [  XNIO-1 task-1] io.undertow.servlet                      : Initializing Spring DispatcherServlet 'dispatcherServlet'
May 17 09:57:21 SERVER java[89308]: 2023-05-17 09:57:21.585  INFO 89308 --- [  XNIO-1 task-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
May 17 09:57:21 SERVER java[89308]: 2023-05-17 09:57:21.591  INFO 89308 --- [  XNIO-1 task-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 6 ms
May 17 09:57:22 SERVER java[89308]: 2023-05-17 09:57:22.388  INFO 89308 --- [           main] io.undertow                              : starting server: Undertow - 2.2.21.Final
May 17 09:57:22 SERVER java[89308]: 2023-05-17 09:57:22.393  INFO 89308 --- [           main] o.s.b.w.e.undertow.UndertowWebServer     : Undertow started on port(s) 9090 (http)
May 17 09:57:22 SERVER java[89308]: 2023-05-17 09:57:22.682 ERROR 89308 --- [           main] o.s.boot.SpringApplication               : Application run failed
May 17 09:57:22 SERVER java[89308]: java.lang.IllegalStateException: Redis store does not support allocating existing ports.
May 17 09:57:22 SERVER java[89308]:         at eu.openanalytics.containerproxy.service.portallocator.redis.RedisPortAllocator.addExistingPort(RedisPortAllocator.java:91) ~[containerproxy-1.0.1.jar!/:1.0.1]
May 17 09:57:22 SERVER java[89308]:         at eu.openanalytics.containerproxy.backend.docker.DockerEngineBackend.scanExistingContainers(DockerEngineBackend.java:217) ~[containerproxy-1.0.1.jar!/:1.0.1]
May 17 09:57:22 SERVER java[89308]:         at eu.openanalytics.containerproxy.service.AppRecoveryService.recoverRunningApps(AppRecoveryService.java:92) ~[containerproxy-1.0.1.jar!/:1.0.1]
May 17 09:57:22 SERVER java[89308]:         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
May 17 09:57:22 SERVER java[89308]:         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
May 17 09:57:22 SERVER java[89308]:         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
May 17 09:57:22 SERVER java[89308]:         at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
May 17 09:57:22 SERVER java[89308]:         at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:344) ~[spring-context-5.3.24.jar!/:5.3.24]
May 17 09:57:22 SERVER java[89308]:         at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:229) ~[spring-context-5.3.24.jar!/:5.3.24]
May 17 09:57:22 SERVER java[89308]:         at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:166) ~[spring-context-5.3.24.jar!/:5.3.24]
May 17 09:57:22 SERVER java[89308]:         at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.24.jar!/:5.3.24]
May 17 09:57:22 SERVER java[89308]:         at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.24.jar!/:5.3.24]
May 17 09:57:22 SERVER java[89308]:         at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.24.jar!/:5.3.24]
May 17 09:57:22 SERVER java[89308]:         at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421) ~[spring-context-5.3.24.jar!/:5.3.24]
May 17 09:57:22 SERVER java[89308]:         at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378) ~[spring-context-5.3.24.jar!/:5.3.24]
May 17 09:57:22 SERVER java[89308]:         at org.springframework.boot.context.event.EventPublishingRunListener.ready(EventPublishingRunListener.java:114) ~[spring-boot-2.7.6.jar!/:2.7.6]
May 17 09:57:22 SERVER java[89308]:         at org.springframework.boot.SpringApplicationRunListeners.lambda$ready$6(SpringApplicationRunListeners.java:82) ~[spring-boot-2.7.6.jar!/:2.7.6]
May 17 09:57:22 SERVER java[89308]:         at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) ~[na:na]
May 17 09:57:22 SERVER java[89308]:         at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:120) ~[spring-boot-2.7.6.jar!/:2.7.6]
May 17 09:57:22 SERVER java[89308]:         at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:114) ~[spring-boot-2.7.6.jar!/:2.7.6]
May 17 09:57:22 SERVER java[89308]:         at org.springframework.boot.SpringApplicationRunListeners.ready(SpringApplicationRunListeners.java:82) ~[spring-boot-2.7.6.jar!/:2.7.6]
May 17 09:57:22 SERVER java[89308]:         at org.springframework.boot.SpringApplication.run(SpringApplication.java:322) ~[spring-boot-2.7.6.jar!/:2.7.6]
May 17 09:57:22 SERVER java[89308]:         at eu.openanalytics.containerproxy.ContainerProxyApplication.main(ContainerProxyApplication.java:128) ~[containerproxy-1.0.1.jar!/:1.0.1]
May 17 09:57:22 SERVER java[89308]:         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
May 17 09:57:22 SERVER java[89308]:         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
May 17 09:57:22 SERVER java[89308]:         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
May 17 09:57:22 SERVER java[89308]:         at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
May 17 09:57:22 SERVER java[89308]:         at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[shinyproxy-3.0.1-exec.jar:3.0.1]
May 17 09:57:22 SERVER java[89308]:         at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) ~[shinyproxy-3.0.1-exec.jar:3.0.1]
May 17 09:57:22 SERVER java[89308]:         at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[shinyproxy-3.0.1-exec.jar:3.0.1]
May 17 09:57:22 SERVER java[89308]:         at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) ~[shinyproxy-3.0.1-exec.jar:3.0.1]

The only way to get ShinyProxy restarted is to actually stop redis as well - which somehow defeats its purpose.

Any idea what’s going wrong? [I have more log to provide, but it doesn’t fit due to the character limit …]

The interesting bits of our config are:

server:
  forward-headers-strategy: native
  servlet.session.timeout: 3600
  secure-cookies: true
  frame-options: sameorigin
  same-site-cookie: Lax

spring:
  session:
    store-type: redis
  redis:
    host: 127.0.0.1
    password:

management:
  metrics:
    export:
      prometheus:
        enabled: true

proxy:
  default-webSocket-reconnection-mode: Auto
  default-proxy-max-lifetime: 1440
  store-mode: Redis
  stop-proxies-on-shutdown: false
  recover-running-proxies: true
  recover-running-proxies-from-different-config: true
  usage-stats-url: micrometer
  usage-stats-micrometer-prefix: shinyproxy
  docker:
    url: http://localhost:2375

Hi @prinn

When using the Redis backend you should remove the following options:

 recover-running-proxies: true
  recover-running-proxies-from-different-config: true

These settings are for the App recovery feature, this is an alternative to using Redis, but you cannot use both at the same time.
See the documentation: https://shinyproxy.io/documentation/configuration/#enabling-app-persistence .

I created an internal issue, such that shinyproxy checks (at startup) whether both options are enabled and if so throw an error.

Hi @tdekoninck, thanks for the quick help. I didn’t read it as either/or but now re-reading the docs, it’s quite clear.