[ https://issues.apache.org/jira/browse/GEODE-9466?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Darrel Schneider updated GEODE-9466: ------------------------------------ Summary: ByteBufferInputStream slower on Java 16 and later (was: ByteBufferInputStream slower on Java 9 and later) > ByteBufferInputStream slower on Java 16 and later > ------------------------------------------------- > > Key: GEODE-9466 > URL: https://issues.apache.org/jira/browse/GEODE-9466 > Project: Geode > Issue Type: Improvement > Components: core > Reporter: Darrel Schneider > Priority: Major > Labels: Java16 > > ByteBufferInputStream has a method determineUnaligned that will always return > false on java 9 and later. This is because it calls Method.setAccessible > which is not allowed under normal conditions starting with java 9 (see: > [https://stackoverflow.com/questions/41265266/how-to-solve-inaccessibleobjectexception-unable-to-make-member-accessible-m).|https://stackoverflow.com/questions/41265266/how-to-solve-inaccessibleobjectexception-unable-to-make-member-accessible-m] > This causes ByteBufferInputStream to do a bunch of its work a byte at a time > instead of using the optimal multi-byte methods like readShort, readInt, and > readLong. > It would be simple to change determineUnaligned in its exception catch block > to read the "os.arch" system property and if it is any of the following to > return true: > {code:java} > arch.equals("i386") || arch.equals("x86") > || arch.equals("amd64") || arch.equals("x86_64") > || arch.equals("ppc64") || arch.equals("ppc64le") > {code} > This is what the Bits class does in jdk 8. In jdk 16 it this logic has moved > to UnsafeConstants and its value is injected by the JVM so it is unclear if > the list has grown. -- This message was sent by Atlassian Jira (v8.3.4#803005)