[jboss-jira] [JBoss JIRA] (WFLY-5892) JGroups throws UnknownHostException on processing IPv6 zone interface id with a subinterface

Brian Stansberry (JIRA) issues at jboss.org
Mon Aug 29 11:02:00 EDT 2016


    [ https://issues.jboss.org/browse/WFLY-5892?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13285429#comment-13285429 ] 

Brian Stansberry commented on WFLY-5892:
----------------------------------------

FWIW, here's a bit of argument that this is a VM bug that I did on a similar issue, WFCORE-934. In that case it was just affecting a test case so we were willing to hack the test to not execute the problem test if the relevant NetworkInterface is virtual and thus made the problem go away. But production code is a different beast. My comment on the other issue:

"
Looks like a JVM problem then. InetAddress.getByName("fe80:0:0:0:8:20ff:fe6d:eab0%net0:2") is not behaving in accordance with javadoc. It is throwing UnknownHostException when it should not. For a literal IPv6 address string that represents a link-local or site-local it should only check the validity of the address format. The format is valid, as described at https://docs.oracle.com/javase/8/docs/api/java/net/Inet6Address.html#scoped which is linked in the InetAddress.getByName javadoc.

For an IPv6 literal address string with a scope_id appended, UnknownHostException should only be thrown if the address isn't a site-local or link-local address.

This test passes in the community CI runs: http://brontes.lab.eng.brq.redhat.com/project.html?projectId=WildFlyCore&testNameId=5354999289145404852&tab=testDetails
There have been failures in the past. I haven't examined them all, but it looks like the failures were due to incorrectly testing global IPv6 addresses, which my patch fixed.
What's happening here is for an InetAddress 'address' obtained from inspecting the addresses available on the system, InetAddress.getByName(address.getHostAddress()) is throwing an UnknownHostException. That's clearly wrong.
"

The test change is here: https://github.com/wildfly/wildfly-core/pull/1415/files

> JGroups throws UnknownHostException on processing IPv6 zone interface id with a subinterface
> --------------------------------------------------------------------------------------------
>
>                 Key: WFLY-5892
>                 URL: https://issues.jboss.org/browse/WFLY-5892
>             Project: WildFly
>          Issue Type: Bug
>          Components: Clustering
>    Affects Versions: 10.0.0.CR5
>         Environment: Solaris 11 Sparc JDK8, IPv6
>            Reporter: Michal Karm Babacek
>            Assignee: Bela Ban
>            Priority: Critical
>         Attachments: tcp.xml
>
>
> JGroups pick up IPv6 zone id index and it fails at translating it into an interface name:
> h3. Address
>  * address used {{2620:52:0:105f:0:0:ffff:188%net0:2}}
>  * {{Caused by: java.net.UnknownHostException: no such interface net0:2}}
> h3. Configuration
> {code}
> <interfaces>
> <interface name="management">
> <inet-address value="2620:52:0:105f::ffff:188"/>
> </interface>
> <interface name="public">
> <inet-address value="2620:52:0:105f::ffff:188"/>
> </interface>
> </interfaces>
> <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
> <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
> <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
> <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
> <socket-binding name="http" port="${jboss.http.port:8080}"/>
> <socket-binding name="https" port="${jboss.https.port:8443}"/>
> <socket-binding name="jgroups-mping" port="0" multicast-address="ff02::12" multicast-port="45700"/>
> <socket-binding name="jgroups-tcp" port="7600"/>
> <socket-binding name="jgroups-tcp-fd" port="57600"/>
> <socket-binding name="jgroups-udp" port="55200" multicast-address="ff02::12" multicast-port="45688"/>
> <socket-binding name="jgroups-udp-fd" port="54200"/>
> <socket-binding name="modcluster" port="0" multicast-address="ff02::a" multicast-port="32983"/>
> <socket-binding name="txn-recovery-environment" port="4712"/>
> <socket-binding name="txn-status-manager" port="4713"/>
> <outbound-socket-binding name="mail-smtp">
> <remote-destination host="localhost" port="25"/>
> </outbound-socket-binding>
> </socket-binding-group>
> {code}
> h3. Exception
> {code}
> ERROR [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC000001: Failed to start service jboss.jgroups.channel.ee: org.jboss.msc.service.StartException in service jboss.jgroups.channel.ee: java.security.PrivilegedActionException: java.lang.Exception: Property assignment of bind_addr in UDP with original property value 2620:52:0:105f:0:0:ffff:188%net0:2 and converted to null could not be assigned
> 	at org.wildfly.clustering.jgroups.spi.service.ChannelBuilder.start(ChannelBuilder.java:80)
> 	at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
> 	at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> 	at java.lang.Thread.run(Thread.java:745)
> Caused by: java.security.PrivilegedActionException: java.lang.Exception: Property assignment of bind_addr in UDP with original property value 2620:52:0:105f:0:0:ffff:188%net0:2 and converted to null could not be assigned
> 	at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:640)
> 	at org.jboss.as.clustering.jgroups.JChannelFactory.createChannel(JChannelFactory.java:98)
> 	at org.wildfly.clustering.jgroups.spi.service.ChannelBuilder.start(ChannelBuilder.java:78)
> 	... 5 more
> Caused by: java.lang.Exception: Property assignment of bind_addr in UDP with original property value 2620:52:0:105f:0:0:ffff:188%net0:2 and converted to null could not be assigned
> 	at org.jgroups.stack.Configurator.resolveAndAssignField(Configurator.java:1154)
> 	at org.jgroups.stack.Configurator.createLayer(Configurator.java:445)
> 	at org.jgroups.stack.Configurator.createProtocols(Configurator.java:398)
> 	at org.jgroups.stack.Configurator.setupProtocolStack(Configurator.java:90)
> 	at org.jgroups.stack.Configurator.setupProtocolStack(Configurator.java:57)
> 	at org.jgroups.stack.ProtocolStack.setup(ProtocolStack.java:477)
> 	at org.jgroups.JChannel.init(JChannel.java:853)
> 	at org.jgroups.JChannel.<init>(JChannel.java:159)
> 	at org.jboss.as.clustering.jgroups.JChannelFactory$1.run(JChannelFactory.java:95)
> 	at org.jboss.as.clustering.jgroups.JChannelFactory$1.run(JChannelFactory.java:92)
> 	at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:636)
> 	... 7 more
> Caused by: java.lang.Exception: Conversion of bind_addr in UDP with original property value 2620:52:0:105f:0:0:ffff:188%net0:2 failed
> 	at org.jgroups.conf.PropertyHelper.getConvertedValue(PropertyHelper.java:84)
> 	at org.jgroups.stack.Configurator.resolveAndAssignField(Configurator.java:1148)
> 	... 17 more
> Caused by: java.net.UnknownHostException: no such interface net0:2
> 	at java.net.Inet6Address.initstr(Inet6Address.java:487)
> 	at java.net.Inet6Address.<init>(Inet6Address.java:408)
> 	at java.net.InetAddress.getAllByName(InetAddress.java:1181)
> 	at java.net.InetAddress.getAllByName(InetAddress.java:1126)
> 	at java.net.InetAddress.getByName(InetAddress.java:1076)
> 	at org.jgroups.conf.PropertyConverters$Default.convert(PropertyConverters.java:288)
> 	at org.jgroups.conf.PropertyHelper.getConvertedValue(PropertyHelper.java:81)
> 	... 18 more
> ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address: ([
>     ("subsystem" => "jgroups"),
>     ("channel" => "ee")
> ]) - failure description: {"WFLYCTL0080: Failed services" => {"jboss.jgroups.channel.ee" => "org.jboss.msc.service.StartException in service jboss.jgroups.channel.ee: java.security.PrivilegedActionException: java.lang.Exception: Property assignment of bind_addr in UDP with original property value 2620:52:0:105f:0:0:ffff:188%net0:2 and converted to null could not be assigned
>     Caused by: java.security.PrivilegedActionException: java.lang.Exception: Property assignment of bind_addr in UDP with original property value 2620:52:0:105f:0:0:ffff:188%net0:2 and converted to null could not be assigned
>     Caused by: java.lang.Exception: Property assignment of bind_addr in UDP with original property value 2620:52:0:105f:0:0:ffff:188%net0:2 and converted to null could not be assigned
>     Caused by: java.lang.Exception: Conversion of bind_addr in UDP with original property value 2620:52:0:105f:0:0:ffff:188%net0:2 failed
>     Caused by: java.net.UnknownHostException: no such interface net0:2"}}
> {code}
> h3. Interfaces on the Solaris 11 box
> See my undermentioned example:
> {code}
> [mbabacek at dev33 ~]$ groovy https://gist.githubusercontent.com/Karm/ec21b42b59f8889f976f/raw/951f01c61097bff2efa64a0f2e73a8881b062743/Interfaces.groovy
> Iface Display name: net4
> Iface Name: net4
> Iface Display name: net0
> Iface Name: net0
>         Subiface Display name: net0:7
>         Subiface Name: net0:7
>         Subiface Display name: net0:6
>         Subiface Name: net0:6
>         Subiface Display name: net0:5
>         Subiface Name: net0:5
>         Subiface Display name: net0:4
>         Subiface Name: net0:4
>         Subiface Display name: net0:3
>         Subiface Name: net0:3
>         Subiface Display name: net0:2
>         Subiface Name: net0:2
>         Subiface Display name: net0:1
>         Subiface Name: net0:1
> Iface Display name: lo0
> Iface Name: lo0
> {code}
> WDYT? Why should JGroups even try to do that?



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the jboss-jira mailing list