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

Richard Achmatowicz (JIRA) issues at jboss.org
Fri Aug 26 09:47:00 EDT 2016


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

Richard Achmatowicz commented on WFLY-5892:
-------------------------------------------

I did a bit of investigating on this issue. The root cause of the problem seems to be with the JDK 8 version of the JDK on Solaris 11 (sparc) and the way InetAddress.getByName() works (or in this case, doesn't work) with virtual interfaces (virtual sub interfaces of a physical interface). Works fine for previous versions of the JDK on Solaris.

In a nutshell, during EAP startup, a socket binding for JGroups is created using an address associated with a virtual interface, and its address is of the form:
{noformat}
2620:52:0:105f:221:28ff:feb3:20f2%net0:7
{noformat}

Note the virtual interface name net0:7 used as a scope id.

Later on, when the JGroups stack is initialised, JGroups Configurator calls InetAddress.getByName() on that string. The JDK 8 version of the JDK can not handle this string correctly and returns an UnknownHostException. Previous versions of the JDK ( < 8) do handle it successfully. 

See JBEAP-2509 comments.

 

> 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