Istvan Toth created HBASE-29234:
-----------------------------------

             Summary: Handle java.lang.reflect.InaccessibleObjectException in 
HFileSystem
                 Key: HBASE-29234
                 URL: https://issues.apache.org/jira/browse/HBASE-29234
             Project: HBase
          Issue Type: Bug
            Reporter: Istvan Toth


 

This is from the Hadoop test suite, but the problem is in HBase
{noformat}
[ERROR] 
org.apache.hadoop.yarn.server.timelineservice.storage.TestTimelineReaderHBaseDown.testTimelineReaderDetectsHBaseDown
  Time elapsed: 0.282 s  <<< ERROR!
java.lang.reflect.InaccessibleObjectException: Unable to make private native 
java.lang.reflect.Field[] java.lang.Class.getDeclaredFields0(boolean) 
accessible: module java.base does not "opens java.lang" to unnamed module 
@541e4305
    at 
java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(AccessibleObject.java:353)
    at 
java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:329)
    at 
java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:277)
    at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:182)
    at java.base/java.lang.reflect.Method.setAccessible(Method.java:176)
    at 
org.apache.hadoop.hbase.util.ReflectionUtils.getModifiersField(ReflectionUtils.java:286)
    at 
org.apache.hadoop.hbase.fs.HFileSystem.addLocationsOrderInterceptor(HFileSystem.java:326)
    at 
org.apache.hadoop.hbase.fs.HFileSystem.addLocationsOrderInterceptor(HFileSystem.java:285)
    at org.apache.hadoop.hbase.fs.HFileSystem.<init>(HFileSystem.java:96)
    at org.apache.hadoop.hbase.fs.HFileSystem.get(HFileSystem.java:453)
{noformat}

Due to JEP416, we are no longer able to set the LocationsOrderInterceptor.
While the code is supposed to catch these instances and still work (just not 
optimally), it does not catch InaccessibleObjectException.

 

Catching InaccessibleObjectException is not real fix, but it allows for running 
with JDK18+.

The real fix would either be avoiding reflection for this (which probably 
requires Hadoop support), or using the sanity-draining workaround for JEP416 
which floats around on stackoverflow.



 

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to