This is an automated email from the ASF dual-hosted git repository.
houston 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 41920dd9f2f build: Fix smoketest for Solr 10 (#3024)
41920dd9f2f is described below
commit 41920dd9f2f62f6323999b654f898cb07a590b71
Author: Houston Putman <[email protected]>
AuthorDate: Tue Jan 14 14:50:33 2025 -0600
build: Fix smoketest for Solr 10 (#3024)
- Fix smoketest for Solr 10
- Fix documentation (javadocs) java version
- Fix some release wizard versions
---
.../java/org/apache/lucene/gradle/Checksum.java | 4 +-
dev-tools/scripts/releaseWizard.py | 4 +-
dev-tools/scripts/releaseWizard.yaml | 2 +-
dev-tools/scripts/smokeTestRelease.py | 111 +++++++++++----------
gradle/documentation/render-javadoc.gradle | 49 +++++++--
.../render-javadoc/{java11 => java17}/package-list | 0
.../render-javadoc/{java11 => java21}/package-list | 20 ++--
gradle/java/javac.gradle | 24 ++---
.../src/markdown/SYSTEM_REQUIREMENTS.md | 2 +-
9 files changed, 123 insertions(+), 93 deletions(-)
diff --git
a/build-tools/build-infra/src/main/java/org/apache/lucene/gradle/Checksum.java
b/build-tools/build-infra/src/main/java/org/apache/lucene/gradle/Checksum.java
index a1d5c09586f..925493822ef 100644
---
a/build-tools/build-infra/src/main/java/org/apache/lucene/gradle/Checksum.java
+++
b/build-tools/build-infra/src/main/java/org/apache/lucene/gradle/Checksum.java
@@ -47,7 +47,7 @@ import org.gradle.work.InputChanges;
public class Checksum extends DefaultTask {
private FileCollection files;
private File outputDir;
- private Algorithm algorithm = Checksum.Algorithm.SHA512;
+ private Algorithm algorithm;
public enum Algorithm {
MD5(new DigestUtils(DigestUtils.getMd5Digest())),
@@ -68,7 +68,7 @@ public class Checksum extends DefaultTask {
public Checksum() {
outputDir = new File(getProject().getBuildDir(), "checksums");
- algorithm = Algorithm.SHA256;
+ algorithm = Checksum.Algorithm.SHA512;
}
@InputFiles
diff --git a/dev-tools/scripts/releaseWizard.py
b/dev-tools/scripts/releaseWizard.py
index 4520a3c832a..e5dd6b835e7 100755
--- a/dev-tools/scripts/releaseWizard.py
+++ b/dev-tools/scripts/releaseWizard.py
@@ -68,7 +68,7 @@ from consolemenu.items import FunctionItem, SubmenuItem,
ExitItem
from scriptutil import BranchType, Version, download, run
# Solr-to-Java version mapping
-java_versions = {6: 8, 7: 8, 8: 8, 9: 11, 10: 11}
+java_versions = {6: 8, 7: 8, 8: 8, 9: 11, 10: 21}
editor = None
state = None
templates = None
@@ -1353,7 +1353,7 @@ def main():
state.save()
- # Smoketester requires JAVA11_HOME to point to Java11
+ # Smoketester requires JAVA21_HOME to point to Java21
os.environ['JAVA_HOME'] = state.get_java_home()
os.environ['JAVACMD'] = state.get_java_cmd()
diff --git a/dev-tools/scripts/releaseWizard.yaml
b/dev-tools/scripts/releaseWizard.yaml
index a1ccdc5cf44..2823eac0e13 100644
--- a/dev-tools/scripts/releaseWizard.yaml
+++ b/dev-tools/scripts/releaseWizard.yaml
@@ -226,7 +226,7 @@ groups:
You will need these tools:
* Python v3.4 or later, with dependencies listed in requirements.txt
- * Java 11 in $JAVA11_HOME
+ * Java 21 in $JAVA21_HOME
* gpg
* git
* svn
diff --git a/dev-tools/scripts/smokeTestRelease.py
b/dev-tools/scripts/smokeTestRelease.py
index 6358a152dd8..6744aea9070 100755
--- a/dev-tools/scripts/smokeTestRelease.py
+++ b/dev-tools/scripts/smokeTestRelease.py
@@ -141,15 +141,18 @@ def checkJARMetaData(desc, jarFile, gitRevision, version):
s = decodeUTF8(z.read(MANIFEST_FILE_NAME))
+ compileJDK = '21'
+ if 'solrj' in desc or 'api' in desc:
+ compileJDK = '17'
for verify in (
'Specification-Vendor: The Apache Software Foundation',
'Implementation-Vendor: The Apache Software Foundation',
'Specification-Title: Apache Solr Search Server:',
'Implementation-Title: org.apache.solr',
- 'X-Compile-Source-JDK: 11',
- 'X-Compile-Target-JDK: 11',
+ 'X-Compile-Source-JDK: %s' % compileJDK,
+ 'X-Compile-Target-JDK: %s' % compileJDK,
'Specification-Version: %s' % version,
- 'X-Build-JDK: 11.',
+ 'X-Build-JDK: 21.',
'Extension-Name: org.apache.solr'):
if type(verify) is not tuple:
verify = (verify,)
@@ -625,8 +628,8 @@ def verifyUnpacked(java, artifact, unpackPath, gitRevision,
version, testArgs):
# in_root_folder.remove(fileName)
if isSrc:
- expected_src_root_folders = ['buildSrc', 'dev-docs', 'dev-tools',
'gradle', 'help', 'solr']
- expected_src_root_files = ['build.gradle', 'gradlew', 'gradlew.bat',
'settings.gradle', 'versions.lock', 'versions.props']
+ expected_src_root_folders = ['build-tools', 'dev-docs', 'dev-tools',
'gradle', 'help', 'solr']
+ expected_src_root_files = ['build.gradle', 'gradlew', 'gradlew.bat',
'settings.gradle', 'settings-gradle.lockfile', 'versions.lock']
expected_src_solr_files = ['build.gradle']
expected_src_solr_folders = ['benchmark', 'bin', 'modules', 'api',
'core', 'cross-dc-manager', 'docker', 'documentation', 'example', 'licenses',
'packaging', 'distribution', 'prometheus-exporter', 'server', 'solr-ref-guide',
'solrj', 'solrj-streaming', 'solrj-zookeeper', 'test-framework', 'webapp',
'.gitignore', '.gitattributes']
is_in_list(in_root_folder, expected_src_root_folders)
@@ -660,47 +663,47 @@ def verifyUnpacked(java, artifact, unpackPath,
gitRevision, version, testArgs):
validateCmd = './gradlew --no-daemon check -p solr/documentation'
print(' run "%s"' % validateCmd)
- java.run_java11(validateCmd, '%s/validate.log' % unpackPath)
-
- print(" run tests w/ Java 11 and testArgs='%s'..." % testArgs)
- java.run_java11('./gradlew --no-daemon test %s' % testArgs, '%s/test.log'
% unpackPath)
- print(" run integration tests w/ Java 11")
- java.run_java11('./gradlew --no-daemon integrationTest
-Dversion.release=%s' % version, '%s/itest.log' % unpackPath)
- print(" build binary release w/ Java 11")
- java.run_java11('./gradlew --no-daemon dev -Dversion.release=%s' %
version, '%s/assemble.log' % unpackPath)
- testSolrExample("%s/solr/packaging/build/dev" % unpackPath,
java.java11_home, False)
-
- if java.run_java17:
- print(" run tests w/ Java 17 and testArgs='%s'..." % testArgs)
- java.run_java17('./gradlew --no-daemon clean test %s' % testArgs,
'%s/test-java17.log' % unpackPath)
- print(" run integration tests w/ Java 17")
- java.run_java17('./gradlew --no-daemon integrationTest
-Dversion.release=%s' % version, '%s/itest-java17.log' % unpackPath)
- print(" build binary release w/ Java 17")
- java.run_java17('./gradlew --no-daemon dev -Dversion.release=%s' %
version, '%s/assemble-java17.log' % unpackPath)
- testSolrExample("%s/solr/packaging/build/dev" % unpackPath,
java.java17_home, False)
+ java.run_java21(validateCmd, '%s/validate.log' % unpackPath)
+
+ print(" run tests w/ Java 21 and testArgs='%s'..." % testArgs)
+ java.run_java21('./gradlew --no-daemon test %s' % testArgs, '%s/test.log'
% unpackPath)
+ print(" run integration tests w/ Java 21")
+ java.run_java21('./gradlew --no-daemon integrationTest
-Dversion.release=%s' % version, '%s/itest.log' % unpackPath)
+ print(" build binary release w/ Java 21")
+ java.run_java21('./gradlew --no-daemon dev -Dversion.release=%s' %
version, '%s/assemble.log' % unpackPath)
+ testSolrExample("%s/solr/packaging/build/dev" % unpackPath,
java.java21_home, False)
+
+ if java.run_java25:
+ print(" run tests w/ Java 25 and testArgs='%s'..." % testArgs)
+ java.run_java25('./gradlew --no-daemon clean test %s' % testArgs,
'%s/test-java25.log' % unpackPath)
+ print(" run integration tests w/ Java 25")
+ java.run_java25('./gradlew --no-daemon integrationTest
-Dversion.release=%s' % version, '%s/itest-java25.log' % unpackPath)
+ print(" build binary release w/ Java 25")
+ java.run_java25('./gradlew --no-daemon dev -Dversion.release=%s' %
version, '%s/assemble-java25.log' % unpackPath)
+ testSolrExample("%s/solr/packaging/build/dev" % unpackPath,
java.java25_home, False)
else:
# Binary tarball
checkAllJARs(os.getcwd(), gitRevision, version)
- print(' copying unpacked distribution for Java 11 ...')
- java11UnpackPath = '%s-java11' % unpackPath
- if os.path.exists(java11UnpackPath):
- shutil.rmtree(java11UnpackPath)
- shutil.copytree(unpackPath, java11UnpackPath)
- os.chdir(java11UnpackPath)
- print(' test solr example w/ Java 11...')
- testSolrExample(java11UnpackPath, java.java11_home, isSlim)
-
- if java.run_java17:
- print(' copying unpacked distribution for Java 17 ...')
- java17UnpackPath = '%s-java17' % unpackPath
- if os.path.exists(java17UnpackPath):
- shutil.rmtree(java17UnpackPath)
- shutil.copytree(unpackPath, java17UnpackPath)
- os.chdir(java17UnpackPath)
- print(' test solr example w/ Java 17...')
- testSolrExample(java17UnpackPath, java.java17_home, isSlim)
+ print(' copying unpacked distribution for Java 21 ...')
+ java21UnpackPath = '%s-java21' % unpackPath
+ if os.path.exists(java21UnpackPath):
+ shutil.rmtree(java21UnpackPath)
+ shutil.copytree(unpackPath, java21UnpackPath)
+ os.chdir(java21UnpackPath)
+ print(' test solr example w/ Java 21...')
+ testSolrExample(java21UnpackPath, java.java21_home, isSlim)
+
+ if java.run_java25:
+ print(' copying unpacked distribution for Java 25 ...')
+ java25UnpackPath = '%s-java25' % unpackPath
+ if os.path.exists(java25UnpackPath):
+ shutil.rmtree(java25UnpackPath)
+ shutil.copytree(unpackPath, java25UnpackPath)
+ os.chdir(java25UnpackPath)
+ print(' test solr example w/ Java 25...')
+ testSolrExample(java25UnpackPath, java.java25_home, isSlim)
os.chdir(unpackPath)
@@ -1019,7 +1022,7 @@ def crawl(downloadedFiles, urlString, targetDir,
exclusions=set()):
sys.stdout.write('.')
-def make_java_config(parser, java17_home):
+def make_java_config(parser, java25_home):
def _make_runner(java_home, version):
print('Java %s JAVA_HOME=%s' % (version, java_home))
if cygwin:
@@ -1033,23 +1036,23 @@ def make_java_config(parser, java17_home):
def run_java(cmd, logfile):
run('%s; %s' % (cmd_prefix, cmd), logfile)
return run_java
- java11_home = os.environ.get('JAVA_HOME')
- if java11_home is None:
+ java21_home = os.environ.get('JAVA_HOME')
+ if java21_home is None:
parser.error('JAVA_HOME must be set')
- run_java11 = _make_runner(java11_home, '11')
- run_java17 = None
- if java17_home is not None:
- run_java17 = _make_runner(java17_home, '17')
+ run_java21 = _make_runner(java21_home, '21')
+ run_java25 = None
+ if java25_home is not None:
+ run_java25 = _make_runner(java25_home, '25')
- jc = namedtuple('JavaConfig', 'run_java11 java11_home run_java17
java17_home')
- return jc(run_java11, java11_home, run_java17, java17_home)
+ jc = namedtuple('JavaConfig', 'run_java21 java21_home run_java25
java25_home')
+ return jc(run_java21, java21_home, run_java25, java25_home)
version_re = re.compile(r'(\d+\.\d+\.\d+(-ALPHA|-BETA)?)')
revision_re = re.compile(r'rev-([a-f\d]+)')
def parse_config():
epilogue = textwrap.dedent('''
Example usage:
- python3 -u dev-tools/scripts/smokeTestRelease.py
https://dist.apache.org/repos/dist/dev/solr/solr-9.0.0-RC1-rev-c7510a0...
+ python3 -u dev-tools/scripts/smokeTestRelease.py
https://dist.apache.org/repos/dist/dev/solr/solr-10.0.0-RC1-rev-c7510a0...
''')
description = 'Utility to test a release.'
parser = argparse.ArgumentParser(description=description, epilog=epilogue,
@@ -1064,8 +1067,8 @@ def parse_config():
help='GIT revision number that release was built with,
defaults to that in URL')
parser.add_argument('--version', metavar='X.Y.Z(-ALPHA|-BETA)?',
help='Version of the release, defaults to that in URL')
- parser.add_argument('--test-java17', metavar='java17_home',
- help='Path to Java17 home directory, to run tests with
if specified')
+ parser.add_argument('--test-java25', metavar='java25_home',
+ help='Path to Java25 home directory, to run tests with
if specified')
parser.add_argument('--download-only', action='store_true', default=False,
help='Only perform download and sha hash check steps')
parser.add_argument('--dev-mode', action='store_true', default=False,
@@ -1094,7 +1097,7 @@ def parse_config():
if c.local_keys is not None and not os.path.exists(c.local_keys):
parser.error('Local KEYS file "%s" not found' % c.local_keys)
- c.java = make_java_config(parser, c.test_java17)
+ c.java = make_java_config(parser, c.test_java25)
if c.tmp_dir:
c.tmp_dir = os.path.abspath(c.tmp_dir)
diff --git a/gradle/documentation/render-javadoc.gradle
b/gradle/documentation/render-javadoc.gradle
index 6c637e540df..4c9c7bcad10 100644
--- a/gradle/documentation/render-javadoc.gradle
+++ b/gradle/documentation/render-javadoc.gradle
@@ -18,7 +18,7 @@ import org.gradle.internal.jvm.Jvm
*/
// generate javadocs by calling javadoc tool
-// see https://docs.oracle.com/en/java/javase/11/tools/javadoc.html
+// see https://docs.oracle.com/en/java/javase/21/javadoc/javadoc.html
def resources = scriptResources(buildscript)
@@ -49,10 +49,11 @@ allprojects {
description "Generates Javadoc API documentation for each module. This
directly invokes javadoc tool."
group "documentation"
- taskResources = project.relativePath(resources)
+ taskResources = resources
dependsOn sourceSets.main.compileClasspath
classpath = sourceSets.main.compileClasspath
srcDirSet = sourceSets.main.java
+ releaseVersion = project.minJavaVersion
outputDir = project.javadoc.destinationDir
}
@@ -61,10 +62,11 @@ allprojects {
description "Generates Javadoc API documentation for the site (relative
links)."
group "documentation"
- taskResources = project.relativePath(resources)
+ taskResources = resources
dependsOn sourceSets.main.compileClasspath
classpath = sourceSets.main.compileClasspath;
srcDirSet = sourceSets.main.java;
+ releaseVersion = project.minJavaVersion
relativeProjectLinks = true
@@ -80,15 +82,13 @@ allprojects {
// Set up titles and link up some offline docs for all documentation
// (they may be unused but this doesn't do any harm).
-def javaJavadocPackages = rootProject.file("${resources}/java11/")
-def junitJavadocPackages = rootProject.file("${resources}/junit/")
allprojects {
project.tasks.withType(RenderJavadocTask) {
title = "Solr ${project.version} ${project.name} API"
offlineLinks += [
- "https://docs.oracle.com/en/java/javase/11/docs/api/":
project.relativePath(javaJavadocPackages),
- "https://junit.org/junit4/javadoc/4.12/":
project.relativePath(junitJavadocPackages)
+
"https://docs.oracle.com/en/java/javase/${project.minJavaVersion}/docs/api/":
rootProject.file("${resources}/java${project.minJavaVersion}/"),
+ "https://junit.org/junit4/javadoc/4.12/":
rootProject.file("${resources}/junit/")
]
solrDocUrl = provider({ rootProject.solrDocUrl })
@@ -198,10 +198,26 @@ configure(subprojects) {
}
}
+class OfflineLink implements Serializable {
+ @Input
+ String url
+
+ @InputDirectory
+ @PathSensitive(PathSensitivity.RELATIVE)
+ @IgnoreEmptyDirectories
+ File location
+
+ OfflineLink(String url, File location) {
+ this.url = url
+ this.location = location
+ }
+}
+
@CacheableTask
class RenderJavadocTask extends DefaultTask {
@InputFiles
@PathSensitive(PathSensitivity.RELATIVE)
+ @IgnoreEmptyDirectories
@SkipWhenEmpty
SourceDirectorySet srcDirSet;
@@ -227,7 +243,16 @@ class RenderJavadocTask extends DefaultTask {
boolean relativeProjectLinks = false
@Input
- def offlineLinks = [:]
+ JavaVersion releaseVersion
+
+ @Internal
+ Map<String, File> offlineLinks = [:]
+
+ // Computes cacheable inputs from the map in offlineLinks.
+ @Nested
+ List<OfflineLink> getCacheableOfflineLinks() {
+ return offlineLinks.collect { url, location -> new OfflineLink(url,
location) }
+ }
@Input
@Optional
@@ -254,8 +279,10 @@ class RenderJavadocTask extends DefaultTask {
final Property<String> executable =
project.objects.property(String).convention(
project.provider { Jvm.current().javadocExecutable.toString() })
- @Input
- def taskResources
+ @InputDirectory
+ @PathSensitive(PathSensitivity.RELATIVE)
+ @IgnoreEmptyDirectories
+ File taskResources
/** Utility method to recursively collect all tasks with same name like this
one that we depend on */
private Set findRenderTasksInDependencies() {
@@ -370,7 +397,7 @@ class RenderJavadocTask extends DefaultTask {
opts << [ '-linkoffline', url, dir ]
}
- opts << [ '--release', project.minJavaVersion.toString() ]
+ opts << [ '--release', releaseVersion.toString() ]
opts << '-Xdoclint:all,-missing'
// Increase Javadoc's heap.
diff --git a/gradle/documentation/render-javadoc/java11/package-list
b/gradle/documentation/render-javadoc/java17/package-list
similarity index 100%
copy from gradle/documentation/render-javadoc/java11/package-list
copy to gradle/documentation/render-javadoc/java17/package-list
diff --git a/gradle/documentation/render-javadoc/java11/package-list
b/gradle/documentation/render-javadoc/java21/package-list
similarity index 96%
rename from gradle/documentation/render-javadoc/java11/package-list
rename to gradle/documentation/render-javadoc/java21/package-list
index 4cfabf8fdf8..4d9e2fefef1 100644
--- a/gradle/documentation/render-javadoc/java11/package-list
+++ b/gradle/documentation/render-javadoc/java21/package-list
@@ -2,10 +2,13 @@ module:java.base
java.io
java.lang
java.lang.annotation
+java.lang.constant
+java.lang.foreign
java.lang.invoke
java.lang.module
java.lang.ref
java.lang.reflect
+java.lang.runtime
java.math
java.net
java.net.spi
@@ -18,7 +21,6 @@ java.nio.file
java.nio.file.attribute
java.nio.file.spi
java.security
-java.security.acl
java.security.cert
java.security.interfaces
java.security.spec
@@ -35,6 +37,7 @@ java.util.concurrent.atomic
java.util.concurrent.locks
java.util.function
java.util.jar
+java.util.random
java.util.regex
java.util.spi
java.util.stream
@@ -131,6 +134,7 @@ javax.naming
javax.naming.directory
javax.naming.event
javax.naming.ldap
+javax.naming.ldap.spi
javax.naming.spi
module:java.net.http
java.net.http
@@ -138,7 +142,6 @@ module:java.prefs
java.util.prefs
module:java.rmi
java.rmi
-java.rmi.activation
java.rmi.dgc
java.rmi.registry
java.rmi.server
@@ -219,12 +222,11 @@ module:jdk.hotspot.agent
module:jdk.httpserver
com.sun.net.httpserver
com.sun.net.httpserver.spi
+module:jdk.incubator.vector
+jdk.incubator.vector
module:jdk.jartool
-com.sun.jarsigner
jdk.security.jarsigner
module:jdk.javadoc
-com.sun.javadoc
-com.sun.tools.javadoc
jdk.javadoc.doclet
module:jdk.jcmd
module:jdk.jconsole
@@ -241,6 +243,7 @@ module:jdk.jfr
jdk.jfr
jdk.jfr.consumer
module:jdk.jlink
+module:jdk.jpackage
module:jdk.jshell
jdk.jshell
jdk.jshell.execution
@@ -260,11 +263,8 @@ module:jdk.naming.rmi
module:jdk.net
jdk.net
jdk.nio
-module:jdk.pack
-module:jdk.rmic
-module:jdk.scripting.nashorn
-jdk.nashorn.api.scripting
-jdk.nashorn.api.tree
+module:jdk.nio.mapmode
+jdk.nio.mapmode
module:jdk.sctp
com.sun.nio.sctp
module:jdk.security.auth
diff --git a/gradle/java/javac.gradle b/gradle/java/javac.gradle
index ec33f977c64..be0196998a8 100644
--- a/gradle/java/javac.gradle
+++ b/gradle/java/javac.gradle
@@ -19,19 +19,19 @@
allprojects {
plugins.withType(JavaPlugin) {
- // Use 'release' flag instead of 'source' and 'target'
- tasks.withType(JavaCompile) {
- compileTestJava {
- sourceCompatibility = project.minJavaTestVersion
- targetCompatibility = project.minJavaTestVersion
- options.compilerArgs += ["--release",
project.minJavaTestVersion.toString()]
- }
- compileJava {
- sourceCompatibility = project.minJavaVersion
- targetCompatibility = project.minJavaVersion
- options.compilerArgs += ["--release",
project.minJavaVersion.toString()]
- }
+ sourceCompatibility = project.minJavaVersion
+ targetCompatibility = project.minJavaVersion
+ // Use 'release' flag instead of 'source' and 'target'
+ tasks.withType(JavaCompile) {
+ compileTestJava {
+ sourceCompatibility = project.minJavaTestVersion
+ targetCompatibility = project.minJavaTestVersion
+ options.compilerArgs += ["--release",
project.minJavaTestVersion.toString()]
+ }
+ compileJava {
+ options.compilerArgs += ["--release",
project.minJavaVersion.toString()]
}
+ }
// Configure warnings.
tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
diff --git a/solr/documentation/src/markdown/SYSTEM_REQUIREMENTS.md
b/solr/documentation/src/markdown/SYSTEM_REQUIREMENTS.md
index 57687e75962..9f13195955a 100644
--- a/solr/documentation/src/markdown/SYSTEM_REQUIREMENTS.md
+++ b/solr/documentation/src/markdown/SYSTEM_REQUIREMENTS.md
@@ -1,6 +1,6 @@
# System Requirements
-Apache Solr runs on Java 11 or greater.
+Apache Solr runs on Java 21 or greater.
It is also recommended to always use the latest update version of your
Java VM, because bugs may affect Solr. An overview of known JVM bugs