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/09/09 17:01:53 UTC

[lucene-solr] branch reference_impl_dev updated: @824 A little close work.

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


The following commit(s) were added to refs/heads/reference_impl_dev by this push:
     new ff11e1a  @824 A little close work.
ff11e1a is described below

commit ff11e1adaa23107f6356186b89b5b19c8dbb1888
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Wed Sep 9 12:01:31 2020 -0500

    @824 A little close work.
---
 .../apache/solr/handler/admin/MetricsHistoryHandler.java   |  9 ++++-----
 .../org/apache/solr/metrics/rrd/SolrRrdBackendFactory.java | 14 +++++++++++---
 2 files changed, 15 insertions(+), 8 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 8e87ed9..1e52aba 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
@@ -230,7 +230,7 @@ public class MetricsHistoryHandler extends RequestHandlerBase implements Permiss
           TimeUnit.MILLISECONDS);
       checkSystemCollection();
     }
-    ObjectReleaseTracker.track(this);
+    assert ObjectReleaseTracker.track(this);
   }
 
   // check that .system exists
@@ -617,15 +617,14 @@ public class MetricsHistoryHandler extends RequestHandlerBase implements Permiss
     if (log.isDebugEnabled()) {
       log.debug("Closing {}", hashCode());
     }
-
+    collectService.shutdownNow();
     try (ParWork closer = new ParWork(this)) {
       closer.collect(factory);
-      closer.addCollect();
+      closer.collect(knownDbs.values());
       closer.collect(collectService);
     }
-
     knownDbs.clear();
-    ObjectReleaseTracker.release(this);
+    assert ObjectReleaseTracker.release(this);
   }
 
   public enum Cmd {
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 db75478..0fa0d9b 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
@@ -36,6 +36,7 @@ import java.util.concurrent.TimeUnit;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.response.QueryResponse;
+import org.apache.solr.common.ParWork;
 import org.apache.solr.common.SolrCloseable;
 import org.apache.solr.common.SolrDocument;
 import org.apache.solr.common.SolrDocumentList;
@@ -46,6 +47,7 @@ import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.util.ExecutorUtil;
 import org.apache.solr.common.util.IOUtils;
+import org.apache.solr.common.util.ObjectReleaseTracker;
 import org.apache.solr.common.util.Pair;
 import org.apache.solr.common.util.TimeSource;
 import org.apache.solr.common.util.SolrNamedThreadFactory;
@@ -98,6 +100,7 @@ public class SolrRrdBackendFactory extends RrdBackendFactory implements SolrClos
    * @param timeSource time source
    */
   public SolrRrdBackendFactory(SolrClient solrClient, String collection, int syncPeriod, TimeSource timeSource) {
+    assert ObjectReleaseTracker.release(this);
     this.solrClient = solrClient;
     this.timeSource = timeSource;
     this.collection = collection;
@@ -460,10 +463,15 @@ public class SolrRrdBackendFactory extends RrdBackendFactory implements SolrClos
       log.debug("Closing {}", hashCode());
     }
     closed = true;
-    backends.forEach((p, b) -> IOUtils.closeQuietly(b));
-    backends.clear();
+
     syncService.shutdownNow();
-    ExecutorUtil.awaitTermination(syncService);
+    try (ParWork closer = new ParWork(this)) {
+      closer.collect(backends.values());
+      closer.collect(syncService);
+      closer.collect(syncService);
+    }
+    backends.clear();
     syncService = null;
+    assert ObjectReleaseTracker.release(this);
   }
 }