[
https://issues.apache.org/jira/browse/DRILL-6349?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16593606#comment-16593606
]
ASF GitHub Bot commented on DRILL-6349:
---------------------------------------
oleg-zinovev opened a new pull request #1446: DRILL-6349
URL: https://github.com/apache/drill/pull/1446
PR allows both build and run with JDK8, JDK 10 (and, likely, JDK9).
All tests, except HBase, Hive, Kafka Storage Plugin tests, works on JDK10:
- HBase cannot start master: HMaster ctor fails with message "Unexpected
version format: 10.0.2"
- Hive cannot create HiveMetaStoreClient: ctor fails with
"java.base/[Ljava.lang.Object; cannot be cast to java.base/[Ljava.net.URI;"
- Kafka: KafkaFilterPushdownTest fails with errors
"java.lang.NoSuchMethodError:
sun.nio.ch.DirectBuffer.cleaner()Lsun/misc/Cleaner;"
Changes:
- Added a DrillPlatformDependent class, which tries to read maxDirectMemory
from jdk.internal.misc.VM, otherwise fallbacks to netty PlatformDependent
- asm dependency updated to 6.2.1, and ReplacingInterpreter fixed
- fixed List.toArray() call in FileSystemPartitionDescriptor (in JDK10 this
method return Object[] and cast fails)
- surefire plugin updated to 2.21.0
- surefire configuration changed:
1) added -XX:+IgnoreUnrecognizedVMOptions
2) added java.se module (mostly, for java.sql module)
3) added -Djdk.attach.allowAttachSelf=true, required by jmockit
4) added locale and country settings, because format tests fails with my
system locale
- compiler plugin updated to 3.8.0
- JarBuilder fixed for JDK10 (target 1.5 and source 1.5 not supported by
javac 10)
- Drill2489CallsAfterCloseThrowExceptionsTest.ThrowsClosedBulkChecker skips
new methods in JDK10 (JDK9 ?) jdbc api
- added jaxb-api and javax.activation dependencies, because javax.xml.bind
and javax.activation modules will be removed in JDK11 (javax.activation used by
jersey)
- drill-config.sh and sqlline.bat changed:
1) added -XX:+IgnoreUnrecognizedVMOptions
2) added --add-modules java.se (mostly, for java.sql module)
3) added --add-opens java.base/jdk.internal.misc=ALL-UNNAMED (allows
access to jdk.internal.misc.VM)
P.S. I am sorry for possible mistakes because of my bad English
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
> Drill JDBC driver fails on Java 1.9+ with NoClassDefFoundError: sun/misc/VM
> ---------------------------------------------------------------------------
>
> Key: DRILL-6349
> URL: https://issues.apache.org/jira/browse/DRILL-6349
> Project: Apache Drill
> Issue Type: Bug
> Components: Client - JDBC
> Affects Versions: 1.13.0
> Environment: 16:23 apache-drill-1.13.0$ uname -a
> Darwin bix.local 17.5.0 Darwin Kernel Version 17.5.0: Mon Mar 5 22:24:32 PST
> 2018; root:xnu-4570.51.1~1/RELEASE_X86_64 x86_64
>
> Reporter: Marc Prud'hommeaux
> Priority: Major
>
> I'm surprised to be unable to find this issue logged elsewhere, but a quick
> search yields nothing. Trying to connect with the JDBC driver raises a
> NoClassDefFoundError for sun.misc.VM, which was removed in Java 9. It is
> understandable that the full drillbit (or its many dependencies) may have
> difficult-to-extract dependencies on some sun.misc.* classes, but the JDBC
> driver should be able to be loaded by any JVM.
>
> Looking at
> ./common/src/main/java/org/apache/drill/common/config/DrillConfig.java, it
> appears that a quick workaround could be to make sun.misc.VM.maxDirectMemory
> called lazily from the one place that uses it: getMaxDirectMemory()
>
>
>
> {{}}{{16:21 apache-drill-1.13.0$
> JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk
> ./bin/drill-localhost }}
> ***Connecting to jdbc:drill:drillbit=localhost*
> WARNING: An illegal reflective access operation has occurred
> WARNING: Illegal reflective access by
> org.apache.calcite.avatica.com.google.protobuf.UnsafeUtil
> (file:/Users/marc/Downloads/apache-drill-1.13.0/jars/3rdparty/avatica-1.10.0.jar)
> to field java.nio.Buffer.address
> WARNING: Please consider reporting this to the maintainers of
> org.apache.calcite.avatica.com.google.protobuf.UnsafeUtil
> WARNING: Use --illegal-access=warn to enable warnings of further illegal
> reflective access operations
> WARNING: All illegal access operations will be denied in a future release
> {{java.lang.NoClassDefFoundError: sun/misc/VM}}
> {{ at
> org.apache.drill.common.config.DrillConfig.<clinit>(DrillConfig.java:49)}}
> {{ at
> org.apache.drill.jdbc.impl.DrillConnectionImpl.<init>(DrillConnectionImpl.java:155)}}
> {{ at
> org.apache.drill.jdbc.impl.DrillJdbc41Factory.newDrillConnection(DrillJdbc41Factory.java:73)}}
> {{ at
> org.apache.drill.jdbc.impl.DrillFactory.newConnection(DrillFactory.java:69)}}
> {{ at
> org.apache.calcite.avatica.UnregisteredDriver.connect(UnregisteredDriver.java:138)}}
> {{ at org.apache.drill.jdbc.Driver.connect(Driver.java:72)}}
> {{ at sqlline.DatabaseConnection.connect(DatabaseConnection.java:168)}}
> {{ at sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:214)}}
> {{ at sqlline.Commands.connect(Commands.java:1083)}}
> {{ at sqlline.Commands.connect(Commands.java:1015)}}
> {{ at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)}}
> {{ at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)}}
> {{ at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)}}
> {{ at java.base/java.lang.reflect.Method.invoke(Method.java:564)}}
> {{ at
> sqlline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:36)}}
> {{ at sqlline.SqlLine.dispatch(SqlLine.java:742)}}
> {{ at sqlline.SqlLine.initArgs(SqlLine.java:528)}}
> {{ at sqlline.SqlLine.begin(SqlLine.java:596)}}
> {{ at sqlline.SqlLine.start(SqlLine.java:375)}}
> {{ at sqlline.SqlLine.main(SqlLine.java:268)}}
> {{Caused by: java.lang.ClassNotFoundException: sun.misc.VM}}
> {{ at
> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)}}
> {{ at
> java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)}}
> {{ at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)}}
> {{... 20 more}}
> apache drill 1.13.0
> "just drill it"
> 0: jdbc:drill:drillbit=localhost>
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)