ChannelFinder / ChannelFinderService

A RESTful directory services for a list channels
MIT License
8 stars 14 forks source link

Problem with ipv6 and pvAccess #120

Closed jacomago closed 8 months ago

jacomago commented 8 months ago

Running docker compose -f docker-compose-integrationtest.yml up --build

Leads to exception

channelfinder-1  | Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
channelfinder-1  | 2024-01-17 10:04:30.830 ERROR 1 --- [           main] o.s.boot.SpringApplication               : Application run failed
channelfinder-1  | 
channelfinder-1  | org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'channelFinderEpicsService': Invocation of init method failed; nested exception is java.lang.UnsupportedOperationException: IPv6 not available
channelfinder-1  |      at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:160) ~[spring-beans-5.3.22.jar!/:5.3.22]
channelfinder-1  |      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:440) ~[spring-beans-5.3.22.jar!/:5.3.22]
channelfinder-1  |      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796) ~[spring-beans-5.3.22.jar!/:5.3.22]
channelfinder-1  |      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.22.jar!/:5.3.22]
channelfinder-1  |      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.22.jar!/:5.3.22]
channelfinder-1  |      at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.22.jar!/:5.3.22]
channelfinder-1  |      at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.22.jar!/:5.3.22]
channelfinder-1  |      at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.22.jar!/:5.3.22]
channelfinder-1  |      at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.22.jar!/:5.3.22]
channelfinder-1  |      at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955) ~[spring-beans-5.3.22.jar!/:5.3.22]
channelfinder-1  |      at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.22.jar!/:5.3.22]
channelfinder-1  |      at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.22.jar!/:5.3.22]
channelfinder-1  |      at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.3.jar!/:2.7.3]
channelfinder-1  |      at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734) ~[spring-boot-2.7.3.jar!/:2.7.3]
channelfinder-1  |      at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.3.jar!/:2.7.3]
channelfinder-1  |      at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) ~[spring-boot-2.7.3.jar!/:2.7.3]
channelfinder-1  |      at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-2.7.3.jar!/:2.7.3]
channelfinder-1  |      at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) ~[spring-boot-2.7.3.jar!/:2.7.3]
channelfinder-1  |      at org.phoebus.channelfinder.Application.main(Application.java:49) ~[classes!/:na]
channelfinder-1  |      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
channelfinder-1  |      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
channelfinder-1  |      at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
channelfinder-1  |      at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
channelfinder-1  |      at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[ChannelFinder-*.jar:na]
channelfinder-1  |      at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) ~[ChannelFinder-*.jar:na]
channelfinder-1  |      at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[ChannelFinder-*.jar:na]
channelfinder-1  |      at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) ~[ChannelFinder-*.jar:na]
channelfinder-1  | Caused by: java.lang.UnsupportedOperationException: IPv6 not available
channelfinder-1  |      at java.base/sun.nio.ch.DatagramChannelImpl.<init>(DatagramChannelImpl.java:156) ~[na:na]
channelfinder-1  |      at java.base/sun.nio.ch.SelectorProviderImpl.openDatagramChannel(SelectorProviderImpl.java:46) ~[na:na]
channelfinder-1  |      at java.base/java.nio.channels.DatagramChannel.open(DatagramChannel.java:187) ~[na:na]
channelfinder-1  |      at org.epics.pva.common.Network.createUDP(Network.java:253) ~[core-pva-4.7.3.jar!/:na]
channelfinder-1  |      at org.epics.pva.server.ServerUDPHandler.<init>(ServerUDPHandler.java:86) ~[core-pva-4.7.3.jar!/:na]
channelfinder-1  |      at org.epics.pva.server.PVAServer.<init>(PVAServer.java:88) ~[core-pva-4.7.3.jar!/:na]
channelfinder-1  |      at org.epics.pva.server.PVAServer.<init>(PVAServer.java:69) ~[core-pva-4.7.3.jar!/:na]
channelfinder-1  |      at org.phoebus.channelfinder.epics.ChannelFinderEpicsService.init(ChannelFinderEpicsService.java:68) ~[classes!/:na]
channelfinder-1  |      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
channelfinder-1  |      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
channelfinder-1  |      at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
channelfinder-1  |      at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
channelfinder-1  |      at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) ~[spring-beans-5.3.22.jar!/:5.3.22]
channelfinder-1  |      at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333) ~[spring-beans-5.3.22.jar!/:5.3.22]
channelfinder-1  |      at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157) ~[spring-beans-5.3.22.jar!/:5.3.22]
channelfinder-1  |      ... 26 common frames omitted
channelfinder-1  | 
jacomago commented 8 months ago

Looks like it was a problem with my docker runner

tynanford commented 8 months ago

Hi @jacomago it seems like I have run into a similar problem with the latest commit on master branch where the docker container complains about no IPv6 support with epics.pva

I think updating core-pva to 4.7.3 would give the ability to set the new environment variable EPICS_PVA_ENABLE_IP6 and the option to turn off IPv6 in channel finder?

https://github.com/ControlSystemStudio/phoebus/issues/2825

shroffk commented 8 months ago

I am tempted to remove the pva RPC support Does anyone actually use it?

tynanford commented 8 months ago

I didn't know about it until now. We don't use pva much here but it looks kinda cool