[ 
https://issues.apache.org/jira/browse/HADOOP-14586?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16064579#comment-16064579
 ] 

Steve Loughran commented on HADOOP-14586:
-----------------------------------------

I want the patch which selectively cherry picks the minimum bits of the 2.8 
code, particular that const and the IsJava7OrAbove() function call. We could 
get away with the other obsolete cruft.

Why? I don't want 2.7.x to actually add new code which isn't a backport

>  org.apache.hadoop.util.Shell in 2.7 breaks <clinit> on Java 9 RC build; 
> backport HADOOP-10775 to 2.7.x
> -------------------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-14586
>                 URL: https://issues.apache.org/jira/browse/HADOOP-14586
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: common
>    Affects Versions: 2.7.2
>         Environment: Java 9, build 175 (Java 9 release candidate as of June 
> 25th, 2017)
>            Reporter: Uwe Schindler
>            Assignee: Akira Ajisaka
>            Priority: Blocker
>              Labels: Java9, release-blocker
>         Attachments: HADOOP-14586-branch-2.7-01.patch, 
> HADOOP-14586-branch-2.7-02.patch
>
>
> You cannot use any Hadoop component anymore with the latest release candidate 
> build of Java 9, because it fails with an StringIndexOutOfBoundsException in 
> {{org.apache.hadoop.util.Shell#<clinit>}}. This leads to a whole cascade of 
> failing classes (next in chain is StringUtils).
> The reason is that the release candidate build of Java 9 no longer has "-ea" 
> in the version string and the system property "java.version" is now simply 
> "9". This causes the following line to fail fatally:
> {code:java}
>   private static boolean IS_JAVA7_OR_ABOVE =
>       System.getProperty("java.version").substring(0, 3).compareTo("1.7") >= 
> 0;
> {code}
> Analysis:
> - This code looks wrong, as comparing a version this way is incorrect.
> - The {{substring(0, 3)}} is completely useless, {{compareTo}} also works 
> without it, although it is still an invalid way to compare a version.
> Maybe look at Lucene's source code (Constants.java) to have a better way in 
> doing this! Sorry this is incredible to me! Hardcoding string bounds into a 
> static initializer that are applied on a string that you have no control of...
> This issue breaks Apache Solr from working with Java 9, so I set it to 
> "critical". We have to disable the whole Hadoop integration once Java 9 is 
> detected.



--
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