Qiang Tian created HBASE-12359:
----------------------------------

             Summary: TestHCM.java failed on windows 
                 Key: HBASE-12359
                 URL: https://issues.apache.org/jira/browse/HBASE-12359
             Project: HBase
          Issue Type: Bug
          Components: master
    Affects Versions: 2.0.0
            Reporter: Qiang Tian
            Priority: Minor


see http://osdir.com/ml/general/2014-10/msg56689.html
{code}
014-10-28 12:21:47,337 ERROR [main] hbase.MiniHBaseCluster(230): Error starting 
cluster
java.lang.RuntimeException: Failed construction of Master: class 
org.apache.hadoop.hbase.master.HMaster
       at 
org.apache.hadoop.hbase.util.JVMClusterUtil.createMasterThread(JVMClusterUtil.java:145)
       at 
org.apache.hadoop.hbase.LocalHBaseCluster.addMaster(LocalHBaseCluster.java:215)
       at 
org.apache.hadoop.hbase.LocalHBaseCluster.<init>(LocalHBaseCluster.java:153)
       at 
org.apache.hadoop.hbase.MiniHBaseCluster.init(MiniHBaseCluster.java:215)
       at 
org.apache.hadoop.hbase.MiniHBaseCluster.<init>(MiniHBaseCluster.java:94)
       at 
org.apache.hadoop.hbase.HBaseTestingUtility.startMiniHBaseCluster(HBaseTestingUtility.java:914)
       at 
org.apache.hadoop.hbase.HBaseTestingUtility.startMiniCluster(HBaseTestingUtility.java:877)
       at 
org.apache.hadoop.hbase.HBaseTestingUtility.startMiniCluster(HBaseTestingUtility.java:794)
       at 
org.apache.hadoop.hbase.HBaseTestingUtility.startMiniCluster(HBaseTestingUtility.java:765)
       at 
org.apache.hadoop.hbase.HBaseTestingUtility.startMiniCluster(HBaseTestingUtility.java:752)
       at 
org.apache.hadoop.hbase.client.TestHCM.setUpBeforeClass(TestHCM.java:138)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
       at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:601)
       at 
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
       at 
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
       at 
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
       at 
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
       at 
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
       at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
       at 
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
       at 
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
       at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
       at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
       at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
       at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.IllegalArgumentException: IPv6 socket cannot join IPv4 
multicast group
       at sun.nio.ch.DatagramChannelImpl.innerJoin(DatagramChannelImpl.java:779)
       at sun.nio.ch.DatagramChannelImpl.join(DatagramChannelImpl.java:865)
       at 
io.netty.channel.socket.nio.NioDatagramChannel.joinGroup(NioDatagramChannel.java:394)
       at 
org.apache.hadoop.hbase.master.ClusterStatusPublisher$MulticastPublisher.connect(ClusterStatusPublisher.java:273)
       at 
org.apache.hadoop.hbase.master.ClusterStatusPublisher.<init>(ClusterStatusPublisher.java:121)
       at org.apache.hadoop.hbase.master.HMaster.<init>(HMaster.java:307)
       at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
       at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
       at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
       at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
       at 
org.apache.hadoop.hbase.util.JVMClusterUtil.createMasterThread(JVMClusterUtil.java:142)
       ... 26 more
{code}

the exception comes from below JDK code:
{code}
 765           if (group instanceof Inet4Address) {
 766               if (family == StandardProtocolFamily.INET6 && 
!Net.canIPv6SocketJoinIPv4Group())
 767                   throw new IllegalArgumentException("IPv6 socket cannot 
join IPv4 multicast group");
{code}


according to 
document(http://docs.oracle.com/javase/7/docs/api/java/nio/channels/MulticastChannel.html)

{quote}
The multicast implementation is intended to map directly to the native 
multicasting facility. Consequently, the following items should be considered 
when developing an application that receives IP multicast datagrams:

    The creation of the channel should specify the ProtocolFamily that 
corresponds to the address type of the multicast groups that the channel will 
join. There is no guarantee that a channel to a socket in one protocol family 
can join and receive multicast datagrams when the address of the multicast 
group corresponds to another protocol family. For example, it is implementation 
specific if a channel to an IPv6 socket can join an IPv4 multicast group and 
receive multicast datagrams sent to the group. 
{quote}

if not specifying family, the ProtocolFamily of the channel's socket is 
platform (and possibly configuration) dependent and therefore unspecified

the publisher code:
{code}
    @Override
    public void connect(Configuration conf) throws IOException {
...
      Bootstrap b = new Bootstrap();
      b.group(group)
          .channel(NioDatagramChannel.class)
          .option(ChannelOption.SO_REUSEADDR, true)
          .handler(new ClusterStatusEncoder(isa));
{code}

looks should use this netty constructor
{code}
    public NioDatagramChannel(InternetProtocolFamily ipFamily) {
        this(newSocket(DEFAULT_SELECTOR_PROVIDER, ipFamily));
    }
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to