Skip to content

Commit cf8da95

Browse files
committed
GEODE-10490: Upgrade Gradle from 7.3.3 to 7.6.6
- Updated gradle-wrapper.properties to use Gradle 7.6.6 - Updated minimumGradleVersion from 6.8 to 7.6 in gradle.properties - Migrated deprecated API usage for Gradle 7.6 compatibility - Updated build scripts and configurations - Updated expected POM files for dependency changes - All existing functionality preserved This upgrade is part of the Apache Geode 2.0 initiative and provides: - Improved build performance and caching - Enhanced dependency resolution - Bug fixes and security updates - Better Java toolchain support
1 parent c6d0892 commit cf8da95

File tree

25 files changed

+129
-111
lines changed

25 files changed

+129
-111
lines changed

build-tools/geode-annotation-processor/build.gradle

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,13 @@
1818

1919
plugins {
2020
id 'java'
21-
id 'java-gradle-plugin'
2221
id 'groovy-gradle-plugin'
23-
id 'maven-publish'
24-
id 'com.gradle.plugin-publish' version '0.18.0'
22+
id 'maven-publish' // Gradle 7.6.6: Required to publish plugin to mavenLocal() for composite build replacement
2523
}
2624

25+
group = 'org.apache.geode.gradle'
26+
version = 1.0
27+
2728
repositories {
2829
mavenCentral()
2930
}
@@ -33,6 +34,8 @@ dependencies {
3334
transitive(false)
3435
}
3536
implementation(gradleApi())
37+
// JUnit 4 needed for compatibility with existing Gradle plugin test infrastructure
38+
implementation 'junit:junit:4.13.2'
3639

3740
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
3841
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'

build-tools/geode-japicmp/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
plugins {
2020
id 'groovy-gradle-plugin'
21+
id 'maven-publish' // Gradle 7.6.6: Required to publish plugin to mavenLocal() for composite build replacement
2122
}
2223

2324
repositories {

build-tools/geode-repeat-test/build.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,15 @@ dependencies {
3333
implementation(gradleApi())
3434
implementation('com.google.guava:guava:31.1-jre')
3535

36+
// Gradle 7.6.6: Dual JUnit support needed because Gradle API internals use JUnit 5 while our tests use JUnit 4
37+
testImplementation 'junit:junit:4.13.2'
3638
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
3739
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
3840
}
3941

4042
test {
43+
// Gradle 7.6.6: Both platforms required to prevent ClassNotFoundException with mixed JUnit versions
44+
useJUnit()
4145
useJUnitPlatform()
4246
}
4347

build-tools/geode-repeat-test/src/main/groovy/org/apache/geode/gradle/testing/repeat/RepeatTest.groovy

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import org.gradle.api.internal.tasks.testing.filter.DefaultTestFilter
2323
import org.gradle.api.tasks.testing.Test
2424
import org.gradle.api.tasks.Input
2525
import org.gradle.internal.time.Clock
26-
import org.gradle.internal.work.WorkerLeaseRegistry
26+
import org.gradle.internal.work.WorkerLeaseService
2727

2828
public class RepeatTest extends Test {
2929

@@ -46,14 +46,17 @@ public class RepeatTest extends Test {
4646

4747
/**
4848
* Use a custom {@link TestExecuter} that processes each test class as many times as submitted.
49+
* GRADLE MIGRATION: Updated to use WorkerLeaseService instead of WorkerLeaseRegistry for Gradle 7.6.6
4950
*/
5051
@Override
5152
protected TestExecuter<JvmTestExecutionSpec> createTestExecuter() {
5253
return new RepeatTestExecuter(
5354
super.createTestExecuter().workerFactory,
5455
getActorFactory(),
5556
getModuleRegistry(),
56-
getServices().get(WorkerLeaseRegistry.class),
57+
// GRADLE MIGRATION: Changed from WorkerLeaseRegistry to WorkerLeaseService
58+
// This is the new API pattern in Gradle 7.6.6 for managing worker threads
59+
getServices().get(WorkerLeaseService.class),
5760
getServices().get(StartParameter.class).getMaxWorkerCount(),
5861
getServices().get(Clock.class),
5962
getServices().get(DocumentationRegistry.class),

build-tools/geode-repeat-test/src/main/java/org/apache/geode/gradle/testing/repeat/ExecutionTrackingTestResultProcessor.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.gradle.api.internal.tasks.testing.TestStartEvent;
2727
import org.gradle.api.internal.tasks.testing.worker.WorkerTestClassProcessor;
2828
import org.gradle.api.tasks.testing.TestOutputEvent;
29+
import org.gradle.api.tasks.testing.TestFailure;
2930

3031
/**
3132
* A test result processor that associates each test event with the test class execution that
@@ -67,8 +68,9 @@ public void output(Object testId, TestOutputEvent event) {
6768
processor.output(testId, event);
6869
}
6970

71+
// Gradle 7.6.6 changed from failure(Object testId, Throwable result) to failure(Object testId, TestFailure result)
7072
@Override
71-
public void failure(Object testId, Throwable result) {
73+
public void failure(Object testId, TestFailure result) {
7274
processor.failure(testId, result);
7375
}
7476

build-tools/geode-repeat-test/src/main/java/org/apache/geode/gradle/testing/repeat/RepeatTestExecuter.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,11 @@
4040
import org.gradle.api.internal.tasks.testing.worker.ForkingTestClassProcessor;
4141
import org.gradle.api.logging.Logger;
4242
import org.gradle.api.logging.Logging;
43+
import org.gradle.api.internal.tasks.testing.worker.WorkerTestClassProcessor;
4344
import org.gradle.internal.Factory;
4445
import org.gradle.internal.actor.ActorFactory;
4546
import org.gradle.internal.time.Clock;
46-
import org.gradle.internal.work.WorkerLeaseRegistry;
47+
import org.gradle.internal.work.WorkerLeaseService;
4748
import org.gradle.process.internal.worker.WorkerProcessFactory;
4849

4950
/**
@@ -71,22 +72,23 @@ public class RepeatTestExecuter implements TestExecuter<JvmTestExecutionSpec> {
7172
private final WorkerProcessFactory workerFactory;
7273
private final ActorFactory actorFactory;
7374
private final ModuleRegistry moduleRegistry;
74-
private final WorkerLeaseRegistry workerLeaseRegistry;
75+
private final WorkerLeaseService workerLeaseService;
7576
private final int maxWorkerCount;
7677
private final Clock clock;
7778
private final DocumentationRegistry documentationRegistry;
7879
private final DefaultTestFilter testFilter;
7980
private final int iterationCount;
8081
private TestClassProcessor processor;
8182

83+
// Gradle 7.6.6: WorkerLeaseRegistry became private, use WorkerLeaseService instead
8284
public RepeatTestExecuter(WorkerProcessFactory workerFactory, ActorFactory actorFactory,
83-
ModuleRegistry moduleRegistry, WorkerLeaseRegistry workerLeaseRegistry, int maxWorkerCount,
85+
ModuleRegistry moduleRegistry, WorkerLeaseService workerLeaseService, int maxWorkerCount,
8486
Clock clock, DocumentationRegistry documentationRegistry, DefaultTestFilter testFilter,
8587
int iterationCount) {
8688
this.workerFactory = workerFactory;
8789
this.actorFactory = actorFactory;
8890
this.moduleRegistry = moduleRegistry;
89-
this.workerLeaseRegistry = workerLeaseRegistry;
91+
this.workerLeaseService = workerLeaseService;
9092
this.maxWorkerCount = maxWorkerCount;
9193
this.clock = clock;
9294
this.documentationRegistry = documentationRegistry;
@@ -99,17 +101,15 @@ public void execute(final JvmTestExecutionSpec testExecutionSpec,
99101
TestResultProcessor testResultProcessor) {
100102
final TestFramework testFramework = testExecutionSpec.getTestFramework();
101103
final WorkerTestClassProcessorFactory testInstanceFactory = testFramework.getProcessorFactory();
102-
final WorkerLeaseRegistry.WorkerLease
103-
currentWorkerLease =
104-
workerLeaseRegistry.getCurrentWorkerLease();
105104
final Set<File> classpath = ImmutableSet.copyOf(testExecutionSpec.getClasspath());
106105
final Set<File> modulePath = ImmutableSet.copyOf(testExecutionSpec.getModulePath());
107106
final List<String>
108107
testWorkerImplementationModules =
109108
testFramework.getTestWorkerImplementationModules();
110109
final Factory<TestClassProcessor> forkingProcessorFactory = () -> {
110+
// Gradle 7.6.6: Worker API changed to require WorkerLeaseService for thread management
111111
TestClassProcessor forkingTestClassProcessor =
112-
new ForkingTestClassProcessor(currentWorkerLease, workerFactory, testInstanceFactory,
112+
new ForkingTestClassProcessor(workerLeaseService, workerFactory, testInstanceFactory,
113113
testExecutionSpec.getJavaForkOptions(), classpath, modulePath,
114114
testWorkerImplementationModules, testFramework.getWorkerConfigurationAction(),
115115
moduleRegistry, documentationRegistry);
@@ -139,7 +139,8 @@ public void execute(final JvmTestExecutionSpec testExecutionSpec,
139139
detector = new DefaultTestClassScanner(testClassFiles, null, processor);
140140
}
141141

142-
new TestMainAction(detector, processor, testResultProcessor, clock, testExecutionSpec.getPath(),
142+
// Gradle 7.6.6: TestMainAction constructor changed to accept WorkerLeaseService for resource management
143+
new TestMainAction(detector, processor, testResultProcessor, workerLeaseService, clock, testExecutionSpec.getPath(),
143144
"Gradle Test Run " + testExecutionSpec.getIdentityPath()).run();
144145
}
145146

build-tools/geode-testing-isolation/src/main/groovy/org/apache/geode/gradle/testing/Executers.groovy

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import org.gradle.api.internal.tasks.testing.JvmTestExecutionSpec
2323
import org.gradle.api.internal.tasks.testing.TestExecuter
2424
import org.gradle.api.internal.tasks.testing.detection.DefaultTestExecuter
2525
import org.gradle.internal.time.Clock
26-
import org.gradle.internal.work.WorkerLeaseRegistry
26+
import org.gradle.internal.work.WorkerLeaseService
2727

2828
class Executers {
2929
/**
@@ -48,7 +48,8 @@ class Executers {
4848
workerProcessFactory,
4949
testTask.actorFactory,
5050
testTask.moduleRegistry,
51-
services.get(WorkerLeaseRegistry),
51+
// Gradle 7.6.6: WorkerLeaseRegistry renamed to WorkerLeaseService
52+
services.get(WorkerLeaseService),
5253
services.get(StartParameter).getMaxWorkerCount(),
5354
services.get(Clock),
5455
services.get(DocumentationRegistry),

build-tools/geode-testing-isolation/src/main/groovy/org/apache/geode/gradle/testing/Workers.groovy

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ class Workers {
3232
ProcessLauncher processLauncher,
3333
MessagingServer messagingServer) {
3434
def workerImplementationFactory = donor.workerImplementationFactory
35+
// Gradle 7.6.6: jvmVersionDetector moved from workerImplementationFactory to donor
36+
def jvmVersionDetector = donor.jvmVersionDetector
3537
return new LauncherProxyWorkerProcessFactory(
3638
donor.loggingManager,
3739
messagingServer,
@@ -40,7 +42,7 @@ class Workers {
4042
workerImplementationFactory.gradleUserHomeDir,
4143
workerImplementationFactory.temporaryFileProvider,
4244
donor.execHandleFactory,
43-
workerImplementationFactory.jvmVersionDetector,
45+
jvmVersionDetector,
4446
donor.outputEventListener,
4547
donor.memoryManager,
4648
processLauncher)

build-tools/geode-testing-isolation/src/main/java/org/apache/geode/gradle/testing/process/LauncherProxyWorkerProcessBuilder.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,4 +157,9 @@ private synchronized Object assignableProcessLauncher(Class<?> requiredType) {
157157
}
158158
return processLauncherProxy;
159159
}
160+
// Gradle 7.6.6: setUseLegacyAddOpens required by WorkerProcessBuilder
161+
@Override
162+
public WorkerProcessBuilder setUseLegacyAddOpens(boolean useLegacyAddOpens) {
163+
return delegate.setUseLegacyAddOpens(useLegacyAddOpens);
164+
}
160165
}

build-tools/scripts/build.gradle

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ plugins {
2020
}
2121

2222
repositories {
23+
// mavenLocal() first for Gradle 7.6.6 strict resolution - custom Geode plugins published here
24+
mavenLocal()
2325
mavenCentral()
2426
gradlePluginPortal()
2527
}
@@ -32,8 +34,9 @@ dependencies {
3234
implementation("org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.3")
3335
implementation('me.champeau.gradle:japicmp-gradle-plugin:0.3.0')
3436

35-
implementation('org.apache.geode.gradle:org.apache.geode.gradle.geode-repeat-test:1.0')
37+
// Custom Geode plugins with Gradle 7.6.6 compatibility fixes and corrected coordinates
38+
implementation('org.apache.geode.gradle:geode-build-tools:1.0')
3639
implementation('org.apache.geode.gradle:geode-japicmp:1.0')
37-
implementation('org.apache.geode.gradle:org.apache.geode.gradle.geode-build-tools:1.0')
38-
implementation('org.apache.geode.gradle:org.apache.geode.gradle.geode-testing-isolation:1.0')
40+
implementation('org.apache.geode.gradle:geode-repeat-test:1.0')
41+
implementation('org.apache.geode.gradle:geode-testing-isolation:1.0')
3942
}

0 commit comments

Comments
 (0)