You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2017/06/28 15:42:53 UTC
[1/2] lucene-solr:branch_6x: Revert "SOLR-10951: Hadoop does not work
on Java 9, disable tests that break"
Repository: lucene-solr
Updated Branches:
refs/heads/branch_6x c91864173 -> c30b776ef
Revert "SOLR-10951: Hadoop does not work on Java 9, disable tests that break"
This reverts commit e43253312f965ba838d80c2000dee761df1f25f5.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/5998ebb2
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/5998ebb2
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/5998ebb2
Branch: refs/heads/branch_6x
Commit: 5998ebb25056fdf134a591f1230c8bff15b55f0a
Parents: c918641
Author: Uwe Schindler <us...@apache.org>
Authored: Wed Jun 28 17:37:29 2017 +0200
Committer: Uwe Schindler <us...@apache.org>
Committed: Wed Jun 28 17:42:37 2017 +0200
----------------------------------------------------------------------
solr/common-build.xml | 5 +----
.../apache/solr/cloud/TestSolrCloudWithDelegationTokens.java | 3 ---
.../solr/security/hadoop/TestDelegationWithHadoopAuth.java | 1 -
3 files changed, 1 insertion(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5998ebb2/solr/common-build.xml
----------------------------------------------------------------------
diff --git a/solr/common-build.xml b/solr/common-build.xml
index c593de7..3b459e7 100644
--- a/solr/common-build.xml
+++ b/solr/common-build.xml
@@ -155,10 +155,7 @@
Cygwin users can explicitly set -Dtests.disableHdfs=false to enable Hdfs related testing.
-->
<condition property="tests.disableHdfs" value="true">
- <or>
- <os family="windows"/>
- <equals arg1="${build.java.runtime}" arg2="9"/>
- </or>
+ <os family="windows"/>
</condition>
<target name="validate" depends="compile-tools">
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5998ebb2/solr/core/src/test/org/apache/solr/cloud/TestSolrCloudWithDelegationTokens.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestSolrCloudWithDelegationTokens.java b/solr/core/src/test/org/apache/solr/cloud/TestSolrCloudWithDelegationTokens.java
index 2f41390..21f5a18 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestSolrCloudWithDelegationTokens.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestSolrCloudWithDelegationTokens.java
@@ -18,7 +18,6 @@ package org.apache.solr.cloud;
import junit.framework.Assert;
import org.apache.hadoop.util.Time;
-import org.apache.lucene.util.Constants;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.client.solrj.impl.CloudSolrClient;
@@ -64,8 +63,6 @@ public class TestSolrCloudWithDelegationTokens extends SolrTestCaseJ4 {
@BeforeClass
public static void startup() throws Exception {
- assumeFalse("SOLR-10951: Hadoop does not work on Java 9", Constants.JRE_IS_MINIMUM_JAVA9);
-
System.setProperty("authenticationPlugin", HttpParamDelegationTokenPlugin.class.getName());
System.setProperty(KerberosPlugin.DELEGATION_TOKEN_ENABLED, "true");
System.setProperty("solr.kerberos.cookie.domain", "127.0.0.1");
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5998ebb2/solr/core/src/test/org/apache/solr/security/hadoop/TestDelegationWithHadoopAuth.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/security/hadoop/TestDelegationWithHadoopAuth.java b/solr/core/src/test/org/apache/solr/security/hadoop/TestDelegationWithHadoopAuth.java
index fa32460..c799296 100644
--- a/solr/core/src/test/org/apache/solr/security/hadoop/TestDelegationWithHadoopAuth.java
+++ b/solr/core/src/test/org/apache/solr/security/hadoop/TestDelegationWithHadoopAuth.java
@@ -52,7 +52,6 @@ public class TestDelegationWithHadoopAuth extends SolrCloudTestCase {
@BeforeClass
public static void setupClass() throws Exception {
assumeFalse("Hadoop does not work on Windows", Constants.WINDOWS);
- assumeFalse("SOLR-10951: Hadoop does not work on Java 9", Constants.JRE_IS_MINIMUM_JAVA9);
configureCluster(NUM_SERVERS)// nodes
.withSecurityJson(TEST_PATH().resolve("security").resolve("hadoop_simple_auth_with_delegation.json"))
[2/2] lucene-solr:branch_6x: SOLR-10951,
HADOOP-14586: Add a hack to make Hadoop's Shell work with Java 9
release
Posted by us...@apache.org.
SOLR-10951, HADOOP-14586: Add a hack to make Hadoop's Shell work with Java 9 release
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/c30b776e
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/c30b776e
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/c30b776e
Branch: refs/heads/branch_6x
Commit: c30b776efd7ef3156a7119b0f35dad000394dbbb
Parents: 5998ebb
Author: Uwe Schindler <us...@apache.org>
Authored: Wed Jun 28 17:41:28 2017 +0200
Committer: Uwe Schindler <us...@apache.org>
Committed: Wed Jun 28 17:42:38 2017 +0200
----------------------------------------------------------------------
solr/CHANGES.txt | 3 +
.../org/apache/solr/servlet/BaseSolrFilter.java | 3 +
.../apache/solr/servlet/BaseSolrServlet.java | 3 +
.../org/apache/solr/util/Java9InitHack.java | 78 ++++++++++++++++++++
.../java/org/apache/solr/SolrTestCaseJ4.java | 6 ++
5 files changed, 93 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c30b776e/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 177de0b..a7dae96 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -200,6 +200,9 @@ Other Changes
with point fields and provides control over dynamic fields used for the raw amount and currency
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 ==================
Bug Fixes
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c30b776e/solr/core/src/java/org/apache/solr/servlet/BaseSolrFilter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/servlet/BaseSolrFilter.java b/solr/core/src/java/org/apache/solr/servlet/BaseSolrFilter.java
index 6f9bbe6..40a2df2 100644
--- a/solr/core/src/java/org/apache/solr/servlet/BaseSolrFilter.java
+++ b/solr/core/src/java/org/apache/solr/servlet/BaseSolrFilter.java
@@ -18,6 +18,8 @@ package org.apache.solr.servlet;
import javax.servlet.Filter;
+import org.apache.solr.util.Java9InitHack;
+
/**
* All Solr filters available to the user's webapp should
* extend this class and not just implement {@link Filter}.
@@ -28,6 +30,7 @@ abstract class BaseSolrFilter implements Filter {
static {
CheckLoggingConfiguration.check();
+ Java9InitHack.initJava9();
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c30b776e/solr/core/src/java/org/apache/solr/servlet/BaseSolrServlet.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/servlet/BaseSolrServlet.java b/solr/core/src/java/org/apache/solr/servlet/BaseSolrServlet.java
index 5042e93..e175f8e 100644
--- a/solr/core/src/java/org/apache/solr/servlet/BaseSolrServlet.java
+++ b/solr/core/src/java/org/apache/solr/servlet/BaseSolrServlet.java
@@ -18,6 +18,8 @@ package org.apache.solr.servlet;
import javax.servlet.http.HttpServlet;
+import org.apache.solr.util.Java9InitHack;
+
/**
* All Solr servlets available to the user's webapp should
* extend this class and not {@link HttpServlet}.
@@ -29,6 +31,7 @@ abstract class BaseSolrServlet extends HttpServlet {
static {
CheckLoggingConfiguration.check();
+ Java9InitHack.initJava9();
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c30b776e/solr/core/src/java/org/apache/solr/util/Java9InitHack.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/Java9InitHack.java b/solr/core/src/java/org/apache/solr/util/Java9InitHack.java
new file mode 100644
index 0000000..0565207
--- /dev/null
+++ b/solr/core/src/java/org/apache/solr/util/Java9InitHack.java
@@ -0,0 +1,78 @@
+/*
+ * 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() {}
+
+}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c30b776e/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
----------------------------------------------------------------------
diff --git a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
index ed6a115..2ee8ff6 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
@@ -113,6 +113,7 @@ import org.apache.solr.schema.SchemaField;
import org.apache.solr.search.SolrIndexSearcher;
import org.apache.solr.servlet.DirectSolrConnection;
import org.apache.solr.util.AbstractSolrTestCase;
+import org.apache.solr.util.Java9InitHack;
import org.apache.solr.util.LogLevel;
import org.apache.solr.util.RandomizeSSL;
import org.apache.solr.util.RandomizeSSL.SSLRandomizer;
@@ -158,6 +159,11 @@ import static java.util.Objects.requireNonNull;
public abstract class SolrTestCaseJ4 extends LuceneTestCase {
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 [] {
"org.junit.",