diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClusterCleanupOnShutdown.java b/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClusterCleanupOnShutdown.java index 0381cece108..79f13198388 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClusterCleanupOnShutdown.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClusterCleanupOnShutdown.java @@ -19,16 +19,12 @@ public class TestClusterCleanupOnShutdown implements Runnable { private Set clustersToWatch = new HashSet<>(); - public void watch(Collection cluster) { - synchronized (clustersToWatch) { - clustersToWatch.addAll(clustersToWatch); - } + public synchronized void watch(Collection clusters) { + clustersToWatch.addAll(clusters); } - public void unWatch(Collection cluster) { - synchronized (clustersToWatch) { - clustersToWatch.removeAll(clustersToWatch); - } + public synchronized void unWatch(Collection clusters) { + clustersToWatch.removeAll(clusters); } @Override @@ -38,21 +34,23 @@ public class TestClusterCleanupOnShutdown implements Runnable { 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 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 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); } } } diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersCleanupExtension.java b/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersCleanupExtension.java index 14bdfa952db..86d496358c1 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersCleanupExtension.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersCleanupExtension.java @@ -33,7 +33,6 @@ public class TestClustersCleanupExtension { executorService.submit(cleanupThread); } - public static void createExtension(Project project) { if (project.getRootProject().getExtensions().findByType(TestClustersCleanupExtension.class) != null) { return; @@ -43,7 +42,7 @@ public class TestClustersCleanupExtension { "__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();