You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Andrew Kyle Purtell (Jira)" <ji...@apache.org> on 2020/05/04 23:22:00 UTC

[jira] [Created] (HBASE-24322) UnsafeAvailChecker should also check that required methods are available

Andrew Kyle Purtell created HBASE-24322:
-------------------------------------------

             Summary: UnsafeAvailChecker should also check that required methods are available
                 Key: HBASE-24322
                 URL: https://issues.apache.org/jira/browse/HBASE-24322
             Project: HBase
          Issue Type: Bug
            Reporter: Andrew Kyle Purtell


We had a weird test failure due to accidentally running tests with Java 11, where Unsafe is available, but the method signatures were different, leading to this:
{noformat}
020-05-02 14:57:15,145 ERROR [main] master.HMasterCommandLine: Master exiting

java.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMasterCommandLine$LocalHMaster

    at org.apache.hadoop.hbase.util.JVMClusterUtil.createMasterThread(JVMClusterUtil.java:143)

    at org.apache.hadoop.hbase.LocalHBaseCluster.addMaster(LocalHBaseCluster.java:237)

    at org.apache.hadoop.hbase.LocalHBaseCluster.<init>(LocalHBaseCluster.java:163)

    at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:225)

    at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:138)

    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)

    at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:127)

    at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:2911)

Caused by: java.lang.NoSuchMethodError: 'void sun.misc.Unsafe.putInt(java.lang.Object, int, int)'

    at org.apache.hadoop.hbase.util.UnsafeAccess.putInt(UnsafeAccess.java:233)

    at org.apache.hadoop.hbase.util.Bytes$ConverterHolder$UnsafeConverter.putInt(Bytes.java:1499)

    at org.apache.hadoop.hbase.util.Bytes.putInt(Bytes.java:1021)

    at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.appendMetaData(RecoverableZooKeeper.java:850)

    at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.create(RecoverableZooKeeper.java:640)

    at org.apache.hadoop.hbase.zookeeper.ZKUtil.createEphemeralNodeAndWatch(ZKUtil.java:1027)

    at org.apache.hadoop.hbase.zookeeper.MasterAddressTracker.setMasterAddress(MasterAddressTracker.java:211)

    at org.apache.hadoop.hbase.master.HMaster.startActiveMasterManager(HMaster.java:2095)

    at org.apache.hadoop.hbase.master.HMaster.<init>(HMaster.java:520)

    at org.apache.hadoop.hbase.master.HMasterCommandLine$LocalHMaster.<init>(HMasterCommandLine.java:315)

    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)

    at org.apache.hadoop.hbase.util.JVMClusterUtil.createMasterThread(JVMClusterUtil.java:138)

    ... 7 more
{noformat}

We should also check that all methods that will be invoked on Unsafe in UnsafeAccess.java are available when deciding in UnsafeAvailChecker if Unsafe is available (and usable). 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)