fix: stop Gradle daemons after dependency resolution (#1598)
Closing the ProjectConnection alone leaves the Tooling API's daemon
running for reuse. Call disconnect() on the connector so the daemon
is shut down once pinning completes.
diff --git a/private/tools/java/com/github/bazelbuild/rules_jvm_external/resolver/gradle/GradleProject.java b/private/tools/java/com/github/bazelbuild/rules_jvm_external/resolver/gradle/GradleProject.java
index 0a1fa95..215d2ee 100644
--- a/private/tools/java/com/github/bazelbuild/rules_jvm_external/resolver/gradle/GradleProject.java
+++ b/private/tools/java/com/github/bazelbuild/rules_jvm_external/resolver/gradle/GradleProject.java
@@ -39,6 +39,7 @@
private final EventListener eventListener;
private final Path initScript;
+ private GradleConnector connector;
private ProjectConnection connection;
public GradleProject(
@@ -68,12 +69,12 @@
// Use gradleCacheDir as gradle.user.home for complete isolation.
// When RJE_UNSAFE_CACHE is set, the user's caches are symlinked into this directory.
System.setProperty("org.gradle.parallel", "true");
- connection =
+ connector =
GradleConnector.newConnector()
.forProjectDirectory(projectDir.toFile())
.useInstallation(gradlePath.toFile())
- .useGradleUserHomeDir(gradleCacheDir.toFile())
- .connect();
+ .useGradleUserHomeDir(gradleCacheDir.toFile());
+ connection = connector.connect();
}
/** Triggers dependency resolution by running the custom task to resolve gradle dependencies */
@@ -102,9 +103,17 @@
@Override
public void close() throws Exception {
- if (connection != null) {
- connection.close();
- connection = null;
+ try {
+ if (connection != null) {
+ connection.close();
+ connection = null;
+ }
+ } finally {
+ // Stops any Gradle daemons started by this connector so we don't leave them running.
+ if (connector != null) {
+ connector.disconnect();
+ connector = null;
+ }
}
}