Revert "SOLR-10951, HADOOP-14586: Add a hack to make Hadoop's Shell work with Java 9 release"

This reverts commit 1e93367c00.
This commit is contained in:
Uwe Schindler 2017-06-28 17:46:16 +02:00
parent 1e93367c00
commit 02caab4ce1
5 changed files with 0 additions and 93 deletions

View File

@ -527,9 +527,6 @@ Other Changes
with point fields and provides control over dynamic fields used for the raw amount and currency with point fields and provides control over dynamic fields used for the raw amount and currency
code sub-fields. (hossman, Steve Rowe) code sub-fields. (hossman, Steve Rowe)
* SOLR-10966: Add workaround for Hadoop-Common 2.7.2 incompatibility with Java 9.
(Uwe Schindler)
================== 6.6.1 ================== ================== 6.6.1 ==================
Bug Fixes Bug Fixes

View File

@ -18,8 +18,6 @@ package org.apache.solr.servlet;
import javax.servlet.Filter; import javax.servlet.Filter;
import org.apache.solr.util.Java9InitHack;
/** /**
* All Solr filters available to the user's webapp should * All Solr filters available to the user's webapp should
* extend this class and not just implement {@link Filter}. * extend this class and not just implement {@link Filter}.
@ -30,7 +28,6 @@ abstract class BaseSolrFilter implements Filter {
static { static {
CheckLoggingConfiguration.check(); CheckLoggingConfiguration.check();
Java9InitHack.initJava9();
} }
} }

View File

@ -18,8 +18,6 @@ package org.apache.solr.servlet;
import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServlet;
import org.apache.solr.util.Java9InitHack;
/** /**
* All Solr servlets available to the user's webapp should * All Solr servlets available to the user's webapp should
* extend this class and not {@link HttpServlet}. * extend this class and not {@link HttpServlet}.
@ -31,7 +29,6 @@ abstract class BaseSolrServlet extends HttpServlet {
static { static {
CheckLoggingConfiguration.check(); CheckLoggingConfiguration.check();
Java9InitHack.initJava9();
} }
} }

View File

@ -1,78 +0,0 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.solr.util;
import java.lang.invoke.MethodHandles;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Objects;
import org.apache.lucene.util.Constants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* This class works around a bug in hadoop-common-2.7.2 where the Hadoop Shell class cannot
* initialize on Java 9 (due to a bug while parsing Java's version number).
* This class does some early checks and fakes the java version for a very short time
* during class loading of Solr's web application or Solr's test framework.
* <p>
* Be sure to run this only in static initializers, as soon as possible after JVM startup!
* <p>
* Related issues: HADOOP-14586, SOLR-10966
* <p>
* TODO: <b>Remove this ASAP, once we have upgraded Hadoop (SOLR-10951)!</b>
*
* @lucene.internal
*/
public final class Java9InitHack {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private static final String JAVA_VERSION_PROP = "java.version";
private static boolean done = false;
/**
* Runs the hack. Should be done as early as possible on JVM startup, from a static initializer
* to prevent concurrency issues - because we change temporarily some 'important' system properties.
*/
public static synchronized void initJava9() {
if (Constants.JRE_IS_MINIMUM_JAVA9 && done == false) {
AccessController.doPrivileged((PrivilegedAction<Void>) Java9InitHack::initPrivileged);
done = true;
}
}
private static Void initPrivileged() {
log.info("Adding temporary workaround for Hadoop's Shell class to allow running on Java 9 (please ignore any warnings/failures).");
String oldVersion = System.getProperty(JAVA_VERSION_PROP);
try {
System.setProperty(JAVA_VERSION_PROP, "1.9");
Class.forName("org.apache.hadoop.util.Shell");
} catch (Throwable t) {
log.warn("Cannot initialize Hadoop's Shell class on Java 9.", t);
} finally {
if (!Objects.equals(System.getProperty(JAVA_VERSION_PROP), oldVersion)) {
System.setProperty(JAVA_VERSION_PROP, oldVersion);
}
}
return null;
}
private Java9InitHack() {}
}

View File

@ -115,7 +115,6 @@ import org.apache.solr.schema.SchemaField;
import org.apache.solr.search.SolrIndexSearcher; import org.apache.solr.search.SolrIndexSearcher;
import org.apache.solr.servlet.DirectSolrConnection; import org.apache.solr.servlet.DirectSolrConnection;
import org.apache.solr.util.AbstractSolrTestCase; import org.apache.solr.util.AbstractSolrTestCase;
import org.apache.solr.util.Java9InitHack;
import org.apache.solr.util.LogLevel; import org.apache.solr.util.LogLevel;
import org.apache.solr.util.RandomizeSSL; import org.apache.solr.util.RandomizeSSL;
import org.apache.solr.util.RandomizeSSL.SSLRandomizer; import org.apache.solr.util.RandomizeSSL.SSLRandomizer;
@ -162,11 +161,6 @@ public abstract class SolrTestCaseJ4 extends LuceneTestCase {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
// this must be a static init block to be safe!
static {
Java9InitHack.initJava9();
}
private static final List<String> DEFAULT_STACK_FILTERS = Arrays.asList(new String [] { private static final List<String> DEFAULT_STACK_FILTERS = Arrays.asList(new String [] {
"org.junit.", "org.junit.",
"junit.framework.", "junit.framework.",