Uploaded image for project: 'JBoss Enterprise Application Platform'
  1. JBoss Enterprise Application Platform
  2. JBEAP-7626

JGroups throws UnknownHostException on processing IPv6 zone interface id with a subinterface

XMLWordPrintable

    • Release Notes
    • Hide
      This issue is caused by a regression in JDK 8 (see bug JDK-8168840), in which IPv6 addresses associated with virtual interfaces on Solaris 11 are not handled correctly. Such addresses were handled correctly in previous JDK versions. The issue can be avoided by either avoiding the use of virtual interfaces on Solaris 11, or by using an earlier version of the JDK which handles the addresses correctly.
      Show
      This issue is caused by a regression in JDK 8 (see bug JDK-8168840), in which IPv6 addresses associated with virtual interfaces on Solaris 11 are not handled correctly. Such addresses were handled correctly in previous JDK versions. The issue can be avoided by either avoiding the use of virtual interfaces on Solaris 11, or by using an earlier version of the JDK which handles the addresses correctly.

      JGroups pick up IPv6 zone id index and it fails at translating it into an interface name:

      Address

      • address used 2620:52:0:105f:0:0:ffff:188%net0:2
      • Caused by: java.net.UnknownHostException: no such interface net0:2

      Configuration

      <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>
      

      Exception

      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"}}
      

      Interfaces on the Solaris 11 box

      See my undermentioned example:

      [mbabacek@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
      

      WDYT? Why should JGroups even try to do that?

              dmichael@redhat.com David Michael (Inactive)
              sgilda_jira Sande Gilda (Inactive)
              Daniel Cihak Daniel Cihak
              Daniel Cihak Daniel Cihak
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated:
                Resolved: