Uwe Schindler created SOLR-10966:
------------------------------------
Summary: Add workaround for Hadoop-Common 2.7.2 incompatibility
with Java 9
Key: SOLR-10966
URL: https://issues.apache.org/jira/browse/SOLR-10966
Project: Solr
Issue Type: Bug
Security Level: Public (Default Security Level. Issues are Public)
Components: Hadoop Integration, hdfs
Affects Versions: 6.6
Reporter: Uwe Schindler
Assignee: Uwe Schindler
Priority: Critical
Fix For: master (7.0), 6.7, 6.6.1
I did some testing to work around HADOOP-14586 and found a temporary solution.
All tests pass with Java 9 build 175 (HDFS, Hadoop Auth / Kerberos).
This is a temporary workaround until we can upgrade Hadoop, see SOLR-10951
The trick here is a hack: The Hadoop Shell class tries to parse
{{java.version}} system property, which is simply {{"9"}} on the Java 9 GA /
release candidate. It contains no dots and is shorter than 3 characters. Hadoop
tries to get the {{substring(0,3)}} and fails with an IndexOutOfBoundsException
in clinit. To work around this, we do the following on early Solr startup /
test startup (in a static analyzer, like we do for logging initialization):
- set {{java.version}} system property to {{"1.9"}}
- initialize the Shell class in Hadoop
- restore the old value of {{java.version}}
The whole thing is done in a doPrivileged. I ran some tests on Policeman
Jenkins, everything works. The hack is only done, if _we_ detect Java 9 and we
are not on Windows (because Windows fails anyways, so we don't try).
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]