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/12/16 18:39:08 UTC

[lucene-solr] 02/02: @1245 Test leak.

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 6f2f98cfd9aa830d9099f69dc32d99d47c632035
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Wed Dec 16 12:38:39 2020 -0600

    @1245 Test leak.
---
 solr/core/src/java/org/apache/solr/cloud/ZkCollectionTerms.java | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkCollectionTerms.java b/solr/core/src/java/org/apache/solr/cloud/ZkCollectionTerms.java
index b5b4ef4..62f5cd6 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkCollectionTerms.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkCollectionTerms.java
@@ -17,6 +17,7 @@
 
 package org.apache.solr.cloud;
 
+import org.apache.solr.common.AlreadyClosedException;
 import org.apache.solr.common.cloud.SolrZkClient;
 import org.apache.solr.common.util.IOUtils;
 import org.apache.solr.common.util.ObjectReleaseTracker;
@@ -37,6 +38,7 @@ class ZkCollectionTerms implements AutoCloseable {
   private final ReentrantLock collectionToTermsLock = new ReentrantLock(true);
 
   private final SolrZkClient zkClient;
+  private volatile boolean closed;
 
   ZkCollectionTerms(String collection, SolrZkClient client) {
     this.collection = collection;
@@ -50,6 +52,9 @@ class ZkCollectionTerms implements AutoCloseable {
     try {
       ZkShardTerms zkterms = null;
       if (!terms.containsKey(shardId)) {
+        if (closed) {
+          throw new AlreadyClosedException();
+        }
         zkterms = new ZkShardTerms(collection, shardId, zkClient);
         IOUtils.closeQuietly(terms.put(shardId, zkterms));
         return zkterms;
@@ -91,6 +96,7 @@ class ZkCollectionTerms implements AutoCloseable {
   public void close() {
     collectionToTermsLock.lock();
     try {
+      closed = true;
       terms.values().forEach(ZkShardTerms::close);
 
       terms.clear();