You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Istvan Toth (Jira)" <ji...@apache.org> on 2025/03/31 05:38:00 UTC
[jira] [Updated] (HBASE-29234) Handle java.lang.reflect.InaccessibleObjectException in HFileSystem
[ https://issues.apache.org/jira/browse/HBASE-29234?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Istvan Toth updated HBASE-29234:
--------------------------------
Description:
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 on JDK18+.
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.
was:
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.
> 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
> Priority: Major
>
>
> 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 on JDK18+.
> 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)