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]

Reply via email to