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)