Skip to content

Commit

Permalink
Fix issue with Gradle daemons hanging indefinitely on shutdown (#44867)…
Browse files Browse the repository at this point in the history
… (#44878)
  • Loading branch information
mark-vieira committed Jul 25, 2019
1 parent 0360516 commit aebfdf1
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,12 @@ public class TestClusterCleanupOnShutdown implements Runnable {

private Set<ElasticsearchCluster> clustersToWatch = new HashSet<>();

public void watch(Collection<ElasticsearchCluster> cluster) {
synchronized (clustersToWatch) {
clustersToWatch.addAll(clustersToWatch);
}
public synchronized void watch(Collection<ElasticsearchCluster> clusters) {
clustersToWatch.addAll(clusters);
}

public void unWatch(Collection<ElasticsearchCluster> cluster) {
synchronized (clustersToWatch) {
clustersToWatch.removeAll(clustersToWatch);
}
public synchronized void unWatch(Collection<ElasticsearchCluster> clusters) {
clustersToWatch.removeAll(clusters);
}

@Override
Expand All @@ -38,21 +34,23 @@ public void run() {
Thread.sleep(Long.MAX_VALUE);
}
} catch (InterruptedException interrupted) {
synchronized (clustersToWatch) {
if (clustersToWatch.isEmpty()) {
return;
}
logger.info("Cleanup thread was interrupted, shutting down all clusters");
Iterator<ElasticsearchCluster> iterator = clustersToWatch.iterator();
while (iterator.hasNext()) {
ElasticsearchCluster cluster = iterator.next();
iterator.remove();
try {
cluster.stop(false);
} catch (Exception e) {
logger.warn("Could not shut down {}", cluster, e);
}
}
shutdownClusters();
}
}

public synchronized void shutdownClusters() {
if (clustersToWatch.isEmpty()) {
return;
}
logger.info("Cleanup thread was interrupted, shutting down all clusters");
Iterator<ElasticsearchCluster> iterator = clustersToWatch.iterator();
while (iterator.hasNext()) {
ElasticsearchCluster cluster = iterator.next();
iterator.remove();
try {
cluster.stop(false);
} catch (Exception e) {
logger.warn("Could not shut down {}", cluster, e);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ public TestClustersCleanupExtension() {
executorService.submit(cleanupThread);
}


public static void createExtension(Project project) {
if (project.getRootProject().getExtensions().findByType(TestClustersCleanupExtension.class) != null) {
return;
Expand All @@ -43,7 +42,7 @@ public static void createExtension(Project project) {
"__testclusters_rate_limit",
TestClustersCleanupExtension.class
);
Thread shutdownHook = new Thread(ext.cleanupThread::run);
Thread shutdownHook = new Thread(ext.cleanupThread::shutdownClusters);
Runtime.getRuntime().addShutdownHook(shutdownHook);
project.getGradle().buildFinished(buildResult -> {
ext.executorService.shutdownNow();
Expand Down

0 comments on commit aebfdf1

Please sign in to comment.