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();