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)