You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ji...@apache.org on 2026/09/24 12:20:14 UTC
(geode) branch develop updated: [GEODE-10662] Gradle 7.6.6 (#8090)
This is an automated email from the ASF dual-hosted git repository.
JinwooHwang pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new 0b39a34f0f [GEODE-10662] Gradle 7.6.6 (#8090)
0b39a34f0f is described below
commit 0b39a34f0f56a987684b0ac1cb4bdd4dd747972e
Author: Jinwoo Hwang <92...@users.noreply.github.com>
AuthorDate: Thu Sep 24 08:20:07 2026 -0400
[GEODE-10662] Gradle 7.6.6 (#8090)
* [GEODE-10662] Update test infrastructure plugins for Gradle 7.6.6 APIs
* [GEODE-10662] Fix POM generation and comparison for Gradle 7.6.6
* [GEODE-10662] Upgrade Gradle to 7.6.6
Regenerates the wrapper via the wrapper task and adjusts the build for
behaviour changes in this version: aggregated Javadoc now selects source
projects by the java plugin so platform projects are excluded, and test
workers receive the java.base/java.lang opens that Gradle no longer adds.
* [GEODE-10662] Return the wrapping builder from fluent methods
Gradle 7.6 chains setUseLegacyAddOpens onto the builder returned by the worker
process factory. Forwarding the delegate's return value handed callers the
unwrapped builder, so the wrapper that installs the process launcher was
discarded. The remaining fluent methods are changed the same way to keep the
wrapper in place.
---
.../geode/gradle/testing/repeat/RepeatTest.groovy | 4 +--
.../ExecutionTrackingTestResultProcessor.java | 3 ++-
.../gradle/testing/repeat/RepeatTestExecuter.java | 18 ++++++-------
.../apache/geode/gradle/testing/Executers.groovy | 4 +--
.../org/apache/geode/gradle/testing/Workers.groovy | 2 +-
.../process/LauncherProxyWorkerProcessBuilder.java | 29 ++++++++++++++++-----
.../scripts/src/main/groovy/check-pom.gradle | 17 ++++++++++--
.../src/main/groovy/geode-publish-common.gradle | 2 +-
.../scripts/src/main/groovy/geode-test.gradle | 1 +
geode-assembly/build.gradle | 4 ++-
.../GradleBuildWithGeodeCoreAcceptanceTest.java | 2 +-
gradle.properties | 2 +-
gradle/wrapper/gradle-wrapper.jar | Bin 61574 -> 61624 bytes
gradle/wrapper/gradle-wrapper.properties | 2 +-
14 files changed, 61 insertions(+), 29 deletions(-)
diff --git a/build-tools/geode-repeat-test/src/main/groovy/org/apache/geode/gradle/testing/repeat/RepeatTest.groovy b/build-tools/geode-repeat-test/src/main/groovy/org/apache/geode/gradle/testing/repeat/RepeatTest.groovy
index e2d4912fe7..451b521d39 100644
--- a/build-tools/geode-repeat-test/src/main/groovy/org/apache/geode/gradle/testing/repeat/RepeatTest.groovy
+++ b/build-tools/geode-repeat-test/src/main/groovy/org/apache/geode/gradle/testing/repeat/RepeatTest.groovy
@@ -23,7 +23,7 @@ import org.gradle.api.internal.tasks.testing.filter.DefaultTestFilter
import org.gradle.api.tasks.testing.Test
import org.gradle.api.tasks.Input
import org.gradle.internal.time.Clock
-import org.gradle.internal.work.WorkerLeaseRegistry
+import org.gradle.internal.work.WorkerLeaseService
public class RepeatTest extends Test {
@@ -53,7 +53,7 @@ public class RepeatTest extends Test {
super.createTestExecuter().workerFactory,
getActorFactory(),
getModuleRegistry(),
- getServices().get(WorkerLeaseRegistry.class),
+ getServices().get(WorkerLeaseService.class),
getServices().get(StartParameter.class).getMaxWorkerCount(),
getServices().get(Clock.class),
getServices().get(DocumentationRegistry.class),
diff --git a/build-tools/geode-repeat-test/src/main/java/org/apache/geode/gradle/testing/repeat/ExecutionTrackingTestResultProcessor.java b/build-tools/geode-repeat-test/src/main/java/org/apache/geode/gradle/testing/repeat/ExecutionTrackingTestResultProcessor.java
index 4d0e76d27f..2e679087da 100644
--- a/build-tools/geode-repeat-test/src/main/java/org/apache/geode/gradle/testing/repeat/ExecutionTrackingTestResultProcessor.java
+++ b/build-tools/geode-repeat-test/src/main/java/org/apache/geode/gradle/testing/repeat/ExecutionTrackingTestResultProcessor.java
@@ -25,6 +25,7 @@ import org.gradle.api.internal.tasks.testing.TestDescriptorInternal;
import org.gradle.api.internal.tasks.testing.TestResultProcessor;
import org.gradle.api.internal.tasks.testing.TestStartEvent;
import org.gradle.api.internal.tasks.testing.worker.WorkerTestClassProcessor;
+import org.gradle.api.tasks.testing.TestFailure;
import org.gradle.api.tasks.testing.TestOutputEvent;
/**
@@ -68,7 +69,7 @@ public class ExecutionTrackingTestResultProcessor implements TestResultProcessor
}
@Override
- public void failure(Object testId, Throwable result) {
+ public void failure(Object testId, TestFailure result) {
processor.failure(testId, result);
}
diff --git a/build-tools/geode-repeat-test/src/main/java/org/apache/geode/gradle/testing/repeat/RepeatTestExecuter.java b/build-tools/geode-repeat-test/src/main/java/org/apache/geode/gradle/testing/repeat/RepeatTestExecuter.java
index 58f068106d..036f3c6917 100644
--- a/build-tools/geode-repeat-test/src/main/java/org/apache/geode/gradle/testing/repeat/RepeatTestExecuter.java
+++ b/build-tools/geode-repeat-test/src/main/java/org/apache/geode/gradle/testing/repeat/RepeatTestExecuter.java
@@ -43,11 +43,11 @@ import org.gradle.api.logging.Logging;
import org.gradle.internal.Factory;
import org.gradle.internal.actor.ActorFactory;
import org.gradle.internal.time.Clock;
-import org.gradle.internal.work.WorkerLeaseRegistry;
+import org.gradle.internal.work.WorkerLeaseService;
import org.gradle.process.internal.worker.WorkerProcessFactory;
/**
- * A copy of {@link DefaultTestExecuter} from Gradle v6.8.3, modified to process each test class
+ * A copy of {@link DefaultTestExecuter} from Gradle v7.6.6, modified to process each test class
* as many times as it was submitted. This is required by our {@link RepeatTest} task, because:
* <ul>
* <li>Geode's {@code RepeatTest} task operates by submitting each test class for processing
@@ -71,7 +71,7 @@ public class RepeatTestExecuter implements TestExecuter<JvmTestExecutionSpec> {
private final WorkerProcessFactory workerFactory;
private final ActorFactory actorFactory;
private final ModuleRegistry moduleRegistry;
- private final WorkerLeaseRegistry workerLeaseRegistry;
+ private final WorkerLeaseService workerLeaseService;
private final int maxWorkerCount;
private final Clock clock;
private final DocumentationRegistry documentationRegistry;
@@ -80,13 +80,13 @@ public class RepeatTestExecuter implements TestExecuter<JvmTestExecutionSpec> {
private TestClassProcessor processor;
public RepeatTestExecuter(WorkerProcessFactory workerFactory, ActorFactory actorFactory,
- ModuleRegistry moduleRegistry, WorkerLeaseRegistry workerLeaseRegistry, int maxWorkerCount,
+ ModuleRegistry moduleRegistry, WorkerLeaseService workerLeaseService, int maxWorkerCount,
Clock clock, DocumentationRegistry documentationRegistry, DefaultTestFilter testFilter,
int iterationCount) {
this.workerFactory = workerFactory;
this.actorFactory = actorFactory;
this.moduleRegistry = moduleRegistry;
- this.workerLeaseRegistry = workerLeaseRegistry;
+ this.workerLeaseService = workerLeaseService;
this.maxWorkerCount = maxWorkerCount;
this.clock = clock;
this.documentationRegistry = documentationRegistry;
@@ -99,9 +99,6 @@ public class RepeatTestExecuter implements TestExecuter<JvmTestExecutionSpec> {
TestResultProcessor testResultProcessor) {
final TestFramework testFramework = testExecutionSpec.getTestFramework();
final WorkerTestClassProcessorFactory testInstanceFactory = testFramework.getProcessorFactory();
- final WorkerLeaseRegistry.WorkerLease
- currentWorkerLease =
- workerLeaseRegistry.getCurrentWorkerLease();
final Set<File> classpath = ImmutableSet.copyOf(testExecutionSpec.getClasspath());
final Set<File> modulePath = ImmutableSet.copyOf(testExecutionSpec.getModulePath());
final List<String>
@@ -109,7 +106,7 @@ public class RepeatTestExecuter implements TestExecuter<JvmTestExecutionSpec> {
testFramework.getTestWorkerImplementationModules();
final Factory<TestClassProcessor> forkingProcessorFactory = () -> {
TestClassProcessor forkingTestClassProcessor =
- new ForkingTestClassProcessor(currentWorkerLease, workerFactory, testInstanceFactory,
+ new ForkingTestClassProcessor(workerLeaseService, workerFactory, testInstanceFactory,
testExecutionSpec.getJavaForkOptions(), classpath, modulePath,
testWorkerImplementationModules, testFramework.getWorkerConfigurationAction(),
moduleRegistry, documentationRegistry);
@@ -139,7 +136,8 @@ public class RepeatTestExecuter implements TestExecuter<JvmTestExecutionSpec> {
detector = new DefaultTestClassScanner(testClassFiles, null, processor);
}
- new TestMainAction(detector, processor, testResultProcessor, clock, testExecutionSpec.getPath(),
+ new TestMainAction(detector, processor, testResultProcessor, workerLeaseService, clock,
+ testExecutionSpec.getPath(),
"Gradle Test Run " + testExecutionSpec.getIdentityPath()).run();
}
diff --git a/build-tools/geode-testing-isolation/src/main/groovy/org/apache/geode/gradle/testing/Executers.groovy b/build-tools/geode-testing-isolation/src/main/groovy/org/apache/geode/gradle/testing/Executers.groovy
index 01d33ca16a..c7c59c8060 100644
--- a/build-tools/geode-testing-isolation/src/main/groovy/org/apache/geode/gradle/testing/Executers.groovy
+++ b/build-tools/geode-testing-isolation/src/main/groovy/org/apache/geode/gradle/testing/Executers.groovy
@@ -23,7 +23,7 @@ import org.gradle.api.internal.tasks.testing.JvmTestExecutionSpec
import org.gradle.api.internal.tasks.testing.TestExecuter
import org.gradle.api.internal.tasks.testing.detection.DefaultTestExecuter
import org.gradle.internal.time.Clock
-import org.gradle.internal.work.WorkerLeaseRegistry
+import org.gradle.internal.work.WorkerLeaseService
class Executers {
/**
@@ -48,7 +48,7 @@ class Executers {
workerProcessFactory,
testTask.actorFactory,
testTask.moduleRegistry,
- services.get(WorkerLeaseRegistry),
+ services.get(WorkerLeaseService),
services.get(StartParameter).getMaxWorkerCount(),
services.get(Clock),
services.get(DocumentationRegistry),
diff --git a/build-tools/geode-testing-isolation/src/main/groovy/org/apache/geode/gradle/testing/Workers.groovy b/build-tools/geode-testing-isolation/src/main/groovy/org/apache/geode/gradle/testing/Workers.groovy
index 0402465dbe..d91ea4262b 100644
--- a/build-tools/geode-testing-isolation/src/main/groovy/org/apache/geode/gradle/testing/Workers.groovy
+++ b/build-tools/geode-testing-isolation/src/main/groovy/org/apache/geode/gradle/testing/Workers.groovy
@@ -40,7 +40,7 @@ class Workers {
workerImplementationFactory.gradleUserHomeDir,
workerImplementationFactory.temporaryFileProvider,
donor.execHandleFactory,
- workerImplementationFactory.jvmVersionDetector,
+ donor.jvmVersionDetector,
donor.outputEventListener,
donor.memoryManager,
processLauncher)
diff --git a/build-tools/geode-testing-isolation/src/main/java/org/apache/geode/gradle/testing/process/LauncherProxyWorkerProcessBuilder.java b/build-tools/geode-testing-isolation/src/main/java/org/apache/geode/gradle/testing/process/LauncherProxyWorkerProcessBuilder.java
index a18f087b44..436d2d11a6 100644
--- a/build-tools/geode-testing-isolation/src/main/java/org/apache/geode/gradle/testing/process/LauncherProxyWorkerProcessBuilder.java
+++ b/build-tools/geode-testing-isolation/src/main/java/org/apache/geode/gradle/testing/process/LauncherProxyWorkerProcessBuilder.java
@@ -50,7 +50,8 @@ public class LauncherProxyWorkerProcessBuilder implements WorkerProcessBuilder {
@Override
public WorkerProcessBuilder applicationClasspath(Iterable<File> files) {
- return delegate.applicationClasspath(files);
+ delegate.applicationClasspath(files);
+ return this;
}
@Override
@@ -60,7 +61,8 @@ public class LauncherProxyWorkerProcessBuilder implements WorkerProcessBuilder {
@Override
public WorkerProcessBuilder applicationModulePath(Iterable<File> files) {
- return delegate.applicationModulePath(files);
+ delegate.applicationModulePath(files);
+ return this;
}
@Override
@@ -70,7 +72,8 @@ public class LauncherProxyWorkerProcessBuilder implements WorkerProcessBuilder {
@Override
public WorkerProcessBuilder setBaseName(String baseName) {
- return delegate.setBaseName(baseName);
+ delegate.setBaseName(baseName);
+ return this;
}
@Override
@@ -80,12 +83,14 @@ public class LauncherProxyWorkerProcessBuilder implements WorkerProcessBuilder {
@Override
public WorkerProcessBuilder setLogLevel(LogLevel logLevel) {
- return delegate.setLogLevel(logLevel);
+ delegate.setLogLevel(logLevel);
+ return this;
}
@Override
public WorkerProcessBuilder sharedPackages(Iterable<String> packages) {
- return delegate.sharedPackages(packages);
+ delegate.sharedPackages(packages);
+ return this;
}
@Override
@@ -105,7 +110,8 @@ public class LauncherProxyWorkerProcessBuilder implements WorkerProcessBuilder {
@Override
public WorkerProcessBuilder sharedPackages(String... packages) {
- return delegate.sharedPackages(packages);
+ delegate.sharedPackages(packages);
+ return this;
}
@Override
@@ -128,6 +134,17 @@ public class LauncherProxyWorkerProcessBuilder implements WorkerProcessBuilder {
delegate.enableJvmMemoryInfoPublishing(shouldPublish);
}
+ /**
+ * Returns this builder rather than the delegate's return value, because callers chain from this
+ * method and must continue to hold the wrapper that installs the process launcher.
+ */
+ @SuppressWarnings("deprecation")
+ @Override
+ public WorkerProcessBuilder setUseLegacyAddOpens(boolean useLegacyAddOpens) {
+ delegate.setUseLegacyAddOpens(useLegacyAddOpens);
+ return this;
+ }
+
/**
* Replaces the standard worker process's process launcher with this builder's launcher.
*/
diff --git a/build-tools/scripts/src/main/groovy/check-pom.gradle b/build-tools/scripts/src/main/groovy/check-pom.gradle
index d73492f3a8..4bd00d900e 100644
--- a/build-tools/scripts/src/main/groovy/check-pom.gradle
+++ b/build-tools/scripts/src/main/groovy/check-pom.gradle
@@ -58,9 +58,22 @@ tasks.register('checkPom') {
}
}
+ // Renders a node so that sibling elements compare equal regardless of the order the POM
+ // generator emits them in (for example <groupId> and <artifactId> within an <exclusion>).
+ // Element order carries no meaning in these blocks, and the comparison below already ignores
+ // the order of the <dependency> elements themselves.
+ def canonicalForm
+ canonicalForm = { node ->
+ def childNodes = node.children().findAll { it instanceof Node }
+ if (childNodes.isEmpty()) {
+ return "${node.name()}=${node.text()}"
+ }
+ return "${node.name()}[" + childNodes.collect { canonicalForm(it) }.sort().join(',') + "]"
+ }
+
def dependenciesBlocksMatch = { actual, expected ->
- def actualTreeSet = actual.dependencies.dependency.collect {it.toString()}.toSet()
- def expectedTreeSet = expected.dependencies.dependency.collect {it.toString()}.toSet()
+ def actualTreeSet = actual.dependencies.dependency.collect {canonicalForm(it)}.toSet()
+ def expectedTreeSet = expected.dependencies.dependency.collect {canonicalForm(it)}.toSet()
actualTreeSet.equals(expectedTreeSet)
}
diff --git a/build-tools/scripts/src/main/groovy/geode-publish-common.gradle b/build-tools/scripts/src/main/groovy/geode-publish-common.gradle
index fc78d2acc7..6ee243526f 100644
--- a/build-tools/scripts/src/main/groovy/geode-publish-common.gradle
+++ b/build-tools/scripts/src/main/groovy/geode-publish-common.gradle
@@ -75,7 +75,7 @@ publishing {
withXml {
def providerAsElement = asElement()
providerAsElement.insertBefore(
- providerAsElement.ownerDocument().createComment(apacheLicense),
+ providerAsElement.getOwnerDocument().createComment(apacheLicense),
providerAsElement.firstChild)
}
}
diff --git a/build-tools/scripts/src/main/groovy/geode-test.gradle b/build-tools/scripts/src/main/groovy/geode-test.gradle
index c3fb6733e3..4b31ae8a73 100644
--- a/build-tools/scripts/src/main/groovy/geode-test.gradle
+++ b/build-tools/scripts/src/main/groovy/geode-test.gradle
@@ -185,6 +185,7 @@ gradle.taskGraph.whenReady({ graph ->
if (project.hasProperty('testJVMVer') && testJVMVer.toInteger() >= 9) {
jvmArgs += [
"--add-opens=java.base/java.io=ALL-UNNAMED",
+ "--add-opens=java.base/java.lang=ALL-UNNAMED",
"--add-opens=java.base/java.lang.annotation=ALL-UNNAMED",
"--add-opens=java.base/java.lang.module=ALL-UNNAMED",
"--add-opens=java.base/java.lang.ref=ALL-UNNAMED",
diff --git a/geode-assembly/build.gradle b/geode-assembly/build.gradle
index 0861d1d996..93eab9f592 100755
--- a/geode-assembly/build.gradle
+++ b/geode-assembly/build.gradle
@@ -428,8 +428,10 @@ tasks.register('docs', Javadoc) {
// Do NOT add the javadocStubs sources directly; we only want them on the classpath, not in output.
+ // Only aggregate projects that actually compile Java sources. Platform (BOM) projects appear
+ // on the javadocOnly configuration but have no source sets or 'classes' task to depend on.
def docProjects = getDependencyProjectsFor('javadocOnly').findAll { proj ->
- proj.hasProperty('sourceSets')
+ proj.pluginManager.hasPlugin('java')
}
// Ensure compilation is done before aggregating docs
diff --git a/geode-assembly/src/acceptanceTest/java/org/apache/geode/management/internal/rest/GradleBuildWithGeodeCoreAcceptanceTest.java b/geode-assembly/src/acceptanceTest/java/org/apache/geode/management/internal/rest/GradleBuildWithGeodeCoreAcceptanceTest.java
index 0fdaaab80f..7142c21fcf 100644
--- a/geode-assembly/src/acceptanceTest/java/org/apache/geode/management/internal/rest/GradleBuildWithGeodeCoreAcceptanceTest.java
+++ b/geode-assembly/src/acceptanceTest/java/org/apache/geode/management/internal/rest/GradleBuildWithGeodeCoreAcceptanceTest.java
@@ -66,7 +66,7 @@ public class GradleBuildWithGeodeCoreAcceptanceTest {
copyDirectoryResource(projectDir, buildDir);
GradleConnector connector = GradleConnector.newConnector();
- connector.useGradleVersion("7.3.3");
+ connector.useGradleVersion("7.6.6");
connector.forProjectDirectory(buildDir);
ProjectConnection connection = connector.connect();
diff --git a/gradle.properties b/gradle.properties
index 2773901c86..b31cff6130 100755
--- a/gradle.properties
+++ b/gradle.properties
@@ -47,7 +47,7 @@ buildId = 0
productName = Apache Geode
productOrg = Apache Software Foundation (ASF)
-minimumGradleVersion = 7.3.3
+minimumGradleVersion = 7.6.6
# Set this on the command line with -P or in ~/.gradle/gradle.properties
# to change the buildDir location. Use an absolute path.
buildRoot=
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 943f0cbfa7..afba109285 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 70d9777842..f429f1b9ea 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.6-all.zip
networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists