You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2020/10/03 19:19:34 UTC

[lucene-solr] 01/06: @935 Shutdown.

This is an automated email from the ASF dual-hosted git repository.

markrmiller pushed a commit to branch reference_impl_dev
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 759a6da43e8639bb8b3b4e8f76b4beb2f8007bf5
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Fri Oct 2 15:34:01 2020 -0500

    @935 Shutdown.
---
 .../solr/handler/admin/MetricsHistoryHandler.java  | 14 +++++++++++---
 .../solr/metrics/rrd/SolrRrdBackendFactory.java    | 22 +++++++++++++++-------
 2 files changed, 26 insertions(+), 10 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/handler/admin/MetricsHistoryHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/MetricsHistoryHandler.java
index a39b9eb..fa4f32e 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/MetricsHistoryHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/MetricsHistoryHandler.java
@@ -71,6 +71,7 @@ import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.Base64;
 import org.apache.solr.common.util.ExecutorUtil;
+import org.apache.solr.common.util.IOUtils;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.ObjectReleaseTracker;
 import org.apache.solr.common.util.Pair;
@@ -623,15 +624,22 @@ public class MetricsHistoryHandler extends RequestHandlerBase implements Permiss
 
     if (collectService != null) {
       scheduledFuture.cancel(false);
-      collectService.shutdownNow();
+      collectService.shutdown();
+      try {
+        boolean success = collectService.awaitTermination(1, TimeUnit.SECONDS);
+        if (!success) {
+          collectService.shutdownNow();
+        }
+      } catch (InterruptedException e) {
+        ParWork.propagateInterrupt(e);
+      }
     }
 
     try (ParWork closer = new ParWork(this)) {
       closer.collect(knownDbs.values());
       closer.collect(solrClient);
-      closer.collect(factory);
     }
-    knownDbs.clear();
+    IOUtils.closeQuietly(factory);
     assert ObjectReleaseTracker.release(this);
   }
 
diff --git a/solr/core/src/java/org/apache/solr/metrics/rrd/SolrRrdBackendFactory.java b/solr/core/src/java/org/apache/solr/metrics/rrd/SolrRrdBackendFactory.java
index 7159037..315d8d9 100644
--- a/solr/core/src/java/org/apache/solr/metrics/rrd/SolrRrdBackendFactory.java
+++ b/solr/core/src/java/org/apache/solr/metrics/rrd/SolrRrdBackendFactory.java
@@ -467,16 +467,24 @@ public class SolrRrdBackendFactory extends RrdBackendFactory implements SolrClos
     }
     closed = true;
 
-    scheduledFuture.cancel(true);
-
-    syncService.shutdownNow();
+    if (scheduledFuture != null) {
+      scheduledFuture.cancel(false);
+    }
+    if (syncService != null) {
+      syncService.shutdown();
+      try {
+        boolean success = syncService.awaitTermination(1, TimeUnit.SECONDS);
+        if (!success) {
+          syncService.shutdownNow();
+        }
+      } catch (InterruptedException e) {
+        ParWork.propagateInterrupt(e);
+      }
+    }
 
-    try (ParWork closer = new ParWork(this)) {
+    try (ParWork closer = new ParWork(this, true)) {
       closer.collect(backends.values());
-      closer.collect();
-      closer.collect(syncService);
     }
-    backends.clear();
     syncService = null;
     assert ObjectReleaseTracker.release(this);
   }