This is an automated email from the ASF dual-hosted git repository.

dsmiley pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/main by this push:
     new 02cdf9e05dd SOLR-17321 JDK 21: delete obsolete checks mostly in build 
(#2868)
02cdf9e05dd is described below

commit 02cdf9e05dd4ff467fd456a0e3a3a3cedcfa0e0c
Author: David Smiley <dsmi...@apache.org>
AuthorDate: Fri Dec 27 23:56:12 2024 -0500

    SOLR-17321 JDK 21: delete obsolete checks mostly in build (#2868)
    
    * Build checks
    * SSL checks not needed
    * Lookup.ensureInitialized
---
 .../apache/lucene/missingdoclet/MissingDoclet.java |   9 +-
 build.gradle                                       |   2 -
 gradle/hacks/hashmapAssertions.gradle              |  33 -------
 gradle/testing/fail-on-unsupported-jdk.gradle      |  32 -------
 .../apache/solr/servlet/CoreContainerProvider.java |   5 +-
 .../java/org/apache/solr/util/SSLTestConfig.java   |  53 -----------
 .../org/apache/solr/util/TestSSLTestConfig.java    | 104 ---------------------
 7 files changed, 3 insertions(+), 235 deletions(-)

diff --git 
a/build-tools/missing-doclet/src/main/java/org/apache/lucene/missingdoclet/MissingDoclet.java
 
b/build-tools/missing-doclet/src/main/java/org/apache/lucene/missingdoclet/MissingDoclet.java
index 8a3c252463c..bb0b0fb3ea0 100644
--- 
a/build-tools/missing-doclet/src/main/java/org/apache/lucene/missingdoclet/MissingDoclet.java
+++ 
b/build-tools/missing-doclet/src/main/java/org/apache/lucene/missingdoclet/MissingDoclet.java
@@ -438,13 +438,6 @@ public class MissingDoclet extends StandardDoclet {
     fullMessage.append("): ");
     fullMessage.append(message);
 
-    if (Runtime.version().feature() == 11 && element.getKind() == 
ElementKind.PACKAGE) {
-      // Avoid JDK 11 bug:
-      // https://issues.apache.org/jira/browse/LUCENE-9747
-      // https://bugs.openjdk.java.net/browse/JDK-8224082
-      reporter.print(Diagnostic.Kind.ERROR, fullMessage.toString());
-    } else {
-      reporter.print(Diagnostic.Kind.ERROR, element, fullMessage.toString());
-    }
+    reporter.print(Diagnostic.Kind.ERROR, element, fullMessage.toString());
   }
 }
diff --git a/build.gradle b/build.gradle
index 9e40cfbcf88..9439438f9a8 100644
--- a/build.gradle
+++ b/build.gradle
@@ -133,7 +133,6 @@ apply from: file('gradle/java/javac.gradle')
 apply from: file('gradle/testing/defaults-tests.gradle')
 apply from: file('gradle/testing/randomization.gradle')
 apply from: file('gradle/testing/fail-on-no-tests.gradle')
-apply from: file('gradle/testing/fail-on-unsupported-jdk.gradle')
 apply from: file('gradle/testing/alternative-jdk-support.gradle')
 apply from: file('gradle/java/jar-manifest.gradle')
 apply from: file('gradle/testing/retry-test.gradle')
@@ -206,7 +205,6 @@ apply from: 
file('gradle/hacks/global-exclude-dependencies.gradle')
 apply from: file('gradle/hacks/gradle-archives.gradle')
 
 apply from: file('gradle/hacks/wipe-temp.gradle')
-apply from: file('gradle/hacks/hashmapAssertions.gradle')
 apply from: file('gradle/hacks/turbocharge-jvm-opts.gradle')
 apply from: file('gradle/hacks/dummy-outputs.gradle')
 
diff --git a/gradle/hacks/hashmapAssertions.gradle 
b/gradle/hacks/hashmapAssertions.gradle
deleted file mode 100644
index 095726c9701..00000000000
--- a/gradle/hacks/hashmapAssertions.gradle
+++ /dev/null
@@ -1,33 +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.
- */
-
-// Disable assertions for HashMap due to: LUCENE-8991 / JDK-8205399
-def vmName = System.getProperty("java.vm.name")
-def spec = System.getProperty("java.specification.version")
-if (vmName =~ /(?i)(hotspot|openjdk|jrockit)/ &&
-    spec =~ /^(1\.8|9|10|11)$/ &&
-    !Boolean.parseBoolean(propertyOrDefault('tests.asserts.hashmap', 
'false'))) {
-  logger.info("Enabling HashMap assertions.")
-  allprojects {
-    plugins.withType(JavaPlugin) {
-      tasks.withType(Test) { task ->
-        jvmArgs("-da:java.util.HashMap")
-      }
-    }
-  }
-}
-
diff --git a/gradle/testing/fail-on-unsupported-jdk.gradle 
b/gradle/testing/fail-on-unsupported-jdk.gradle
deleted file mode 100644
index 7d94b709764..00000000000
--- a/gradle/testing/fail-on-unsupported-jdk.gradle
+++ /dev/null
@@ -1,32 +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.
- */
-
-configure(rootProject) {
-  task ensureJdkSupported() {
-    doFirst {
-      if 
(System.getProperty("os.name").toLowerCase(Locale.ROOT).contains("mac") && 
rootProject.runtimeJavaVersion == JavaVersion.VERSION_20) {
-        throw new GradleException("Tests cannot be run with JDK20 on Mac; see 
SOLR-16733 for more details.")
-      }
-    }
-  }
-
-  allprojects {
-    tasks.withType(Test) {
-        dependsOn ":ensureJdkSupported"
-    }
-  }
-}
diff --git 
a/solr/core/src/java/org/apache/solr/servlet/CoreContainerProvider.java 
b/solr/core/src/java/org/apache/solr/servlet/CoreContainerProvider.java
index 8b8bc3c927d..5a2a053c090 100644
--- a/solr/core/src/java/org/apache/solr/servlet/CoreContainerProvider.java
+++ b/solr/core/src/java/org/apache/solr/servlet/CoreContainerProvider.java
@@ -215,13 +215,12 @@ public class CoreContainerProvider implements 
ServletContextListener {
       }
 
       // Do initial logs for experimental Lucene classes.
-      // TODO: Use "MethodHandles.lookup().ensureClassInitialized()" instead 
of "Class.forName()"
-      //   once JDK 15+ is mandatory
+      final var lookup = MethodHandles.lookup();
       Stream.of(MMapDirectory.class, VectorUtil.class)
           .forEach(
               cls -> {
                 try {
-                  Class.forName(cls.getName());
+                  lookup.ensureInitialized(cls);
                 } catch (ReflectiveOperationException re) {
                   throw new SolrException(
                       ErrorCode.SERVER_ERROR, "Could not load Lucene class: " 
+ cls.getName());
diff --git 
a/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java 
b/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java
index 4b0c7c47529..5a830e35aa8 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java
@@ -16,7 +16,6 @@
  */
 package org.apache.solr.util;
 
-import com.carrotsearch.randomizedtesting.RandomizedTest;
 import java.security.KeyManagementException;
 import java.security.KeyStore;
 import java.security.KeyStoreException;
@@ -27,7 +26,6 @@ import java.security.SecureRandomSpi;
 import java.security.UnrecoverableKeyException;
 import java.util.Random;
 import java.util.concurrent.ThreadLocalRandom;
-import java.util.regex.Pattern;
 import javax.net.ssl.SSLContext;
 import org.apache.http.config.Registry;
 import org.apache.http.config.RegistryBuilder;
@@ -38,7 +36,6 @@ import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
 import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
 import org.apache.http.ssl.SSLContextBuilder;
 import org.apache.http.ssl.SSLContexts;
-import org.apache.lucene.util.Constants;
 import org.apache.solr.client.solrj.embedded.SSLConfig;
 import org.apache.solr.client.solrj.impl.HttpClientUtil;
 import 
org.apache.solr.client.solrj.impl.HttpClientUtil.SocketFactoryRegistryProvider;
@@ -108,10 +105,6 @@ public class SSLTestConfig {
     this.clientAuth = clientAuth;
     this.checkPeerName = checkPeerName;
 
-    if (this.useSsl) {
-      assumeSslIsSafeToTest();
-    }
-
     final String resourceName =
         checkPeerName ? TEST_KEYSTORE_LOCALHOST_RESOURCE : 
TEST_KEYSTORE_BOGUSHOST_RESOURCE;
     trustStore = keyStore = Resource.newClassPathResource(resourceName);
@@ -414,50 +407,4 @@ public class SSLTestConfig {
       /* NOOP */
     }
   }
-
-  /**
-   * Helper method for sanity checking if it's safe to use SSL on this JVM
-   *
-   * @see <a 
href="https://issues.apache.org/jira/browse/SOLR-12988";>SOLR-12988</a>
-   * @throws org.junit.internal.AssumptionViolatedException if this JVM is 
known to have SSL
-   *     problems
-   */
-  public static void assumeSslIsSafeToTest() {
-    if (Constants.JVM_NAME.startsWith("OpenJDK")
-        || Constants.JVM_NAME.startsWith("Java HotSpot(TM)")) {
-      RandomizedTest.assumeFalse(
-          "Test (or randomization for this seed) wants to use SSL, "
-              + "but SSL is known to fail on your JVM: "
-              + Constants.JVM_NAME
-              + " / "
-              + Constants.JVM_VERSION,
-          isOpenJdkJvmVersionKnownToHaveProblems(Constants.JVM_VERSION));
-    }
-  }
-
-  /**
-   * package visibility for tests
-   *
-   * @see Constants#JVM_VERSION
-   * @lucene.internal
-   */
-  static boolean isOpenJdkJvmVersionKnownToHaveProblems(final String 
jvmVersion) {
-    // TODO: would be nice to replace with Runtime.Version once we don't have 
to
-    // worry about java8 support when backporting to branch_8x
-    return KNOWN_BAD_OPENJDK_JVMS.matcher(jvmVersion).matches();
-  }
-
-  private static final Pattern KNOWN_BAD_OPENJDK_JVMS =
-      Pattern.compile( // 11 to 11.0.2 were all definitely problematic
-          // - https://bugs.openjdk.java.net/browse/JDK-8212885
-          // - https://bugs.openjdk.java.net/browse/JDK-8213202
-          "(^11(\\.0(\\.0|\\.1|\\.2)?)?($|(\\_|\\+|\\-).*$))|"
-              +
-              // early (pre-ea) "testing" builds of 11, 12, and 13 were also 
buggy
-              // - https://bugs.openjdk.java.net/browse/JDK-8224829
-              "(^(11|12|13).*-testing.*$)|"
-              +
-              // So far, all 13-ea builds (up to 13-ea-26) have been buggy
-              // - https://bugs.openjdk.java.net/browse/JDK-8226338
-              "(^13-ea.*$)");
 }
diff --git 
a/solr/test-framework/src/test/org/apache/solr/util/TestSSLTestConfig.java 
b/solr/test-framework/src/test/org/apache/solr/util/TestSSLTestConfig.java
deleted file mode 100644
index 319f78923d8..00000000000
--- a/solr/test-framework/src/test/org/apache/solr/util/TestSSLTestConfig.java
+++ /dev/null
@@ -1,104 +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.util.Arrays;
-import java.util.List;
-import org.apache.lucene.util.Constants;
-import org.apache.solr.SolrTestCase;
-
-public class TestSSLTestConfig extends SolrTestCase {
-
-  /** Sanity check that our JVM version parsing logic seems correct */
-  public void testIsOpenJdkJvmVersionKnownToHaveProblems() {
-    final List<String> rel_suffixes = Arrays.asList("", "+42");
-    final List<String> ea_suffixes = Arrays.asList("-ea", "-ea+42");
-    final List<String> suffixes = Arrays.asList("", "+42", "-ea", "-ea+42");
-
-    // as far as we know, any Java 8, 9 or 10 impl should be fine...
-    for (String base :
-        Arrays.asList(
-            "1.8", "1.8.0", "1.8.1", "9", "9.0", "9.1", "9.0.0", "9.1.0", 
"9.1.1", "10", "10.0",
-            "10.1", "10.0.0", "10.1.0", "10.1.1")) {
-      for (String suffix : suffixes) {
-        final String v = base + suffix;
-        assertFalse(v, 
SSLTestConfig.isOpenJdkJvmVersionKnownToHaveProblems(v));
-      }
-    }
-
-    // Known Problems start with Java 11...
-
-    // java 11 releases below 11.0.3 were all bad...
-    for (String bad : Arrays.asList("11", "11.0", "11.0.1", "11.0.2")) {
-      for (String suffix : suffixes) {
-        final String v = bad + suffix;
-        assertTrue(v, SSLTestConfig.isOpenJdkJvmVersionKnownToHaveProblems(v));
-      }
-    }
-
-    // ...but 11.0.3 or higher should be ok.
-    for (String ok : Arrays.asList("11.0.3", "11.0.42", "11.1", "11.1.42")) {
-      for (String suffix : suffixes) {
-        final String v = ok + suffix;
-        assertFalse(v, 
SSLTestConfig.isOpenJdkJvmVersionKnownToHaveProblems(v));
-      }
-    }
-
-    // As far as we know/hope, all "official" java 12 and higher impls should 
be fine...
-    for (String major : Arrays.asList("12", "13", "99")) {
-      for (String minor : Arrays.asList("", ".0", ".42", ".0.42")) {
-        for (String suffix : rel_suffixes) {
-          final String v = major + minor + suffix;
-          assertFalse(v, 
SSLTestConfig.isOpenJdkJvmVersionKnownToHaveProblems(v));
-        }
-      }
-    }
-
-    // ...but pre EA "testing" builds of 11, 12, and 13 are all definitely 
problematic...
-    for (String major : Arrays.asList("11", "12", "13")) {
-      for (String suffix : suffixes) {
-        final String v = major + "-testing" + suffix;
-        assertTrue(v, SSLTestConfig.isOpenJdkJvmVersionKnownToHaveProblems(v));
-      }
-    }
-
-    // ...and all 13-ea builds (so far) have definitely been problematic.
-    for (String suffix : ea_suffixes) {
-      final String v = "13" + suffix;
-      assertTrue(v, SSLTestConfig.isOpenJdkJvmVersionKnownToHaveProblems(v));
-    }
-  }
-
-  public void testFailIfUserRunsTestsWithJVMThatHasKnownSSLBugs() {
-    // NOTE: If there is some future JVM version, where all available "ea" 
builds are known to be
-    // buggy, but we still want to be able to use for running tests (ie: via 
jenkins) to look for
-    // *other* bugs, then those -ea versions can be "white listed" here...
-
-    try {
-      SSLTestConfig.assumeSslIsSafeToTest();
-    } catch (org.junit.AssumptionViolatedException ave) {
-      fail(
-          "Current JVM ("
-              + Constants.JVM_NAME
-              + " / "
-              + Constants.JVM_VERSION
-              + ") is known to have SSL Bugs.  Other tests that (explicitly or 
via randomization) "
-              + " use SSL will be SKIPed");
-    }
-  }
-}

Reply via email to