[ 
https://issues.apache.org/jira/browse/HBASE-24322?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andrew Kyle Purtell updated HBASE-24322:
----------------------------------------
    Description: 
We had a weird test failure due to accidentally running tests with some Java > 
8 (exact version I am unsure of), where Unsafe is available, but the method 
signatures were different or some methods were removed, 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). 

  was:
We had a weird test failure due to accidentally running tests with some Java > 
8 (exact version I am unsure of), 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). 


> 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
>            Assignee: Andrew Kyle Purtell
>            Priority: Minor
>             Fix For: 3.0.0-alpha-1, 1.7.0, 2.4.0
>
>
> We had a weird test failure due to accidentally running tests with some Java 
> > 8 (exact version I am unsure of), where Unsafe is available, but the method 
> signatures were different or some methods were removed, 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)

Reply via email to