Skip to content

Commit bfe3d88

Browse files
retagithub-actions[bot]
authored andcommitted
Update to Gradle 7.5 (#3594)
Signed-off-by: Andriy Redko <[email protected]> (cherry picked from commit d4465ce)
1 parent 60379e5 commit bfe3d88

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

buildSrc/src/main/java/org/opensearch/gradle/testclusters/StandaloneRestIntegTestTask.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
package org.opensearch.gradle.testclusters;
3333

3434
import groovy.lang.Closure;
35+
3536
import org.opensearch.gradle.FileSystemOperationsAware;
3637
import org.opensearch.gradle.test.Fixture;
3738
import org.opensearch.gradle.util.GradleUtils;
@@ -46,6 +47,8 @@
4647
import org.gradle.internal.resources.ResourceLock;
4748
import org.gradle.internal.resources.SharedResource;
4849

50+
import java.lang.invoke.MethodHandles;
51+
import java.lang.invoke.MethodType;
4952
import java.util.ArrayList;
5053
import java.util.Collection;
5154
import java.util.Collections;
@@ -124,12 +127,32 @@ public List<ResourceLock> getSharedResources() {
124127

125128
int nodeCount = clusters.stream().mapToInt(cluster -> cluster.getNodes().size()).sum();
126129
if (nodeCount > 0) {
127-
locks.add(resource.getResourceLock(Math.min(nodeCount, resource.getMaxUsages())));
130+
locks.add(getResourceLock(resource, Math.min(nodeCount, resource.getMaxUsages())));
128131
}
129132

130133
return Collections.unmodifiableList(locks);
131134
}
132135

136+
private ResourceLock getResourceLock(SharedResource resource, int nUsages) {
137+
try {
138+
try {
139+
// The getResourceLock(int) is used by Gradle pre-7.5
140+
return (ResourceLock) MethodHandles.publicLookup()
141+
.findVirtual(SharedResource.class, "getResourceLock", MethodType.methodType(ResourceLock.class, int.class))
142+
.bindTo(resource)
143+
.invokeExact(nUsages);
144+
} catch (NoSuchMethodException | IllegalAccessException ex) {
145+
// The getResourceLock() is used by Gradle post-7.4
146+
return (ResourceLock) MethodHandles.publicLookup()
147+
.findVirtual(SharedResource.class, "getResourceLock", MethodType.methodType(ResourceLock.class))
148+
.bindTo(resource)
149+
.invokeExact();
150+
}
151+
} catch (Throwable ex) {
152+
throw new IllegalStateException("Unable to find suitable ResourceLock::getResourceLock", ex);
153+
}
154+
}
155+
133156
@Override
134157
public Task dependsOn(Object... dependencies) {
135158
super.dependsOn(dependencies);

gradle/wrapper/gradle-wrapper.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
distributionBase=GRADLE_USER_HOME
1313
distributionPath=wrapper/dists
14-
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-all.zip
14+
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
1515
zipStoreBase=GRADLE_USER_HOME
1616
zipStorePath=wrapper/dists
17-
distributionSha256Sum=e6d864e3b5bc05cc62041842b306383fc1fefcec359e70cebb1d470a6094ca82
17+
distributionSha256Sum=97a52d145762adc241bad7fd18289bf7f6801e08ece6badf80402fe2b9f250b1

0 commit comments

Comments
 (0)