Uploaded image for project: 'Solr'
  1. Solr
  2. SOLR-10966

Add workaround for Hadoop-Common 2.7.2 incompatibility with Java 9

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Critical
    • Resolution: Fixed
    • 6.6
    • 6.6.1, 6.7, 7.0
    • Hadoop Integration, hdfs
    • None

    Description

      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.

      Attachments

        1. SOLR-10966.patch
          9 kB
          Uwe Schindler
        2. SOLR-10966.patch
          9 kB
          Uwe Schindler

        Issue Links

          Activity

            People

              uschindler Uwe Schindler
              uschindler Uwe Schindler
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: