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

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


The following commit(s) were added to refs/heads/main by this push:
     new 1c80803   SOLR-15660: Remove universal 10 second test thread leak 
linger. (#377)
1c80803 is described below

commit 1c80803a555457365393cae51729e0c20e9e94ab
Author: Mark Robert Miller <[email protected]>
AuthorDate: Tue Nov 9 14:42:30 2021 -0600

     SOLR-15660: Remove universal 10 second test thread leak linger. (#377)
---
 .../solr/bench/MiniClusterBenchStateTest.java      |  2 ++
 .../solr/analytics/facet/PivotFacetTest.java       |  2 ++
 .../legacy/facet/LegacyFieldFacetCloudTest.java    |  2 ++
 .../legacy/facet/LegacyRangeFacetCloudTest.java    |  3 +-
 .../util/OldAnalyticsRequestConverterUnitTest.java |  2 ++
 .../apache/solr/gcs/GCSIncrementalBackupTest.java  |  2 ++
 .../apache/solr/jaeger/TestJaegerConfigurator.java |  2 ++
 ...penNLPLangDetectUpdateProcessorFactoryTest.java |  2 ++
 .../org/apache/solr/ltr/TestLTROnSolrCloud.java    |  2 ++
 .../prometheus/scraper/SolrCloudScraperTest.java   |  2 ++
 .../apache/solr/s3/S3IncrementalBackupTest.java    |  7 +++--
 .../cloud/HttpPartitionWithTlogReplicasTest.java   |  2 ++
 .../apache/solr/cloud/TestCloudConsistency.java    |  2 ++
 .../solr/cloud/TestLeaderElectionZkExpiry.java     |  8 ++++--
 .../org/apache/solr/cloud/TestStressLiveNodes.java |  2 ++
 .../HdfsCloudIncrementalBackupTest.java            |  8 +++++-
 .../collections/TestHdfsCloudBackupRestore.java    |  2 ++
 .../solr/cloud/hdfs/HDFSCollectionsAPITest.java    |  2 ++
 .../cloud/hdfs/HdfsBasicDistributedZk2Test.java    |  2 ++
 .../cloud/hdfs/HdfsBasicDistributedZkTest.java     |  2 ++
 .../hdfs/HdfsChaosMonkeyNothingIsSafeTest.java     |  2 ++
 .../cloud/hdfs/HdfsChaosMonkeySafeLeaderTest.java  |  2 ++
 .../apache/solr/cloud/hdfs/HdfsNNFailoverTest.java |  2 ++
 .../solr/cloud/hdfs/HdfsRecoverLeaseTest.java      |  2 ++
 .../apache/solr/cloud/hdfs/HdfsRecoveryZkTest.java |  2 ++
 .../cloud/hdfs/HdfsRestartWhileUpdatingTest.java   |  2 ++
 .../apache/solr/cloud/hdfs/HdfsSyncSliceTest.java  |  2 ++
 .../org/apache/solr/cloud/hdfs/HdfsTestUtil.java   |  2 ++
 .../apache/solr/cloud/hdfs/HdfsThreadLeakTest.java |  2 ++
 .../HdfsTlogReplayBufferedWhileIndexingTest.java   |  2 ++
 .../cloud/hdfs/HdfsUnloadDistributedZkTest.java    |  2 ++
 .../hdfs/HdfsWriteToMultipleCollectionsTest.java   |  2 ++
 .../org/apache/solr/cloud/hdfs/StressHdfsTest.java |  2 ++
 .../cluster/events/ClusterEventProducerTest.java   |  4 ++-
 .../apache/solr/core/HdfsDirectoryFactoryTest.java |  2 ++
 .../HdfsBackupRepositoryIntegrationTest.java       |  2 ++
 .../org/apache/solr/handler/TestBlobHandler.java   |  2 ++
 .../solr/handler/TestHdfsBackupRestoreCore.java    |  2 ++
 .../solr/handler/admin/DaemonStreamApiTest.java    |  2 ++
 .../solr/handler/admin/MBeansHandlerTest.java      |  3 ++
 .../DistributedQueryComponentCustomSortTest.java   |  2 ++
 .../apache/solr/store/hdfs/HdfsDirectoryTest.java  |  2 ++
 .../client/solrj/io/stream/JDBCStreamTest.java     |  2 ++
 .../solrj/io/stream/StreamExpressionTest.java      |  2 ++
 .../solr/client/solrj/request/TestV2Request.java   |  2 ++
 .../org/apache/solr/SolrIgnoredThreadsFilter.java  | 33 ++++++++++++++++------
 .../src/java/org/apache/solr/SolrTestCase.java     |  2 +-
 .../org/apache/solr/util/BadHdfsThreadsFilter.java |  2 ++
 .../solr/cloud/MiniSolrCloudClusterTest.java       |  2 ++
 49 files changed, 133 insertions(+), 17 deletions(-)

diff --git 
a/solr/benchmark/src/test/org/apache/solr/bench/MiniClusterBenchStateTest.java 
b/solr/benchmark/src/test/org/apache/solr/bench/MiniClusterBenchStateTest.java
index 431ee69..e17ed29 100644
--- 
a/solr/benchmark/src/test/org/apache/solr/bench/MiniClusterBenchStateTest.java
+++ 
b/solr/benchmark/src/test/org/apache/solr/bench/MiniClusterBenchStateTest.java
@@ -25,6 +25,7 @@ import static 
org.apache.solr.bench.generators.SourceDSL.integers;
 import static org.apache.solr.bench.generators.SourceDSL.longs;
 import static org.apache.solr.bench.generators.SourceDSL.strings;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.lang.invoke.MethodHandles;
 import java.util.Collections;
 import java.util.Iterator;
@@ -44,6 +45,7 @@ import org.openjdk.jmh.runner.options.TimeValue;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@ThreadLeakLingering(linger = 10)
 public class MiniClusterBenchStateTest extends SolrTestCaseJ4 {
   private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
diff --git 
a/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/PivotFacetTest.java
 
b/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/PivotFacetTest.java
index 28b21df..f55e812 100644
--- 
a/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/PivotFacetTest.java
+++ 
b/solr/contrib/analytics/src/test/org/apache/solr/analytics/facet/PivotFacetTest.java
@@ -16,12 +16,14 @@
  */
 package org.apache.solr.analytics.facet;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.util.ArrayList;
 import java.util.List;
 
 import org.junit.BeforeClass;
 import org.junit.Test;
 
+@ThreadLeakLingering(linger = 0)
 public class PivotFacetTest extends SolrAnalyticsFacetTestCase {
 
   @BeforeClass
diff --git 
a/solr/contrib/analytics/src/test/org/apache/solr/analytics/legacy/facet/LegacyFieldFacetCloudTest.java
 
b/solr/contrib/analytics/src/test/org/apache/solr/analytics/legacy/facet/LegacyFieldFacetCloudTest.java
index 78c0a0a..2753e69 100644
--- 
a/solr/contrib/analytics/src/test/org/apache/solr/analytics/legacy/facet/LegacyFieldFacetCloudTest.java
+++ 
b/solr/contrib/analytics/src/test/org/apache/solr/analytics/legacy/facet/LegacyFieldFacetCloudTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.analytics.legacy.facet;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -27,6 +28,7 @@ import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
+@ThreadLeakLingering(linger = 0)
 public class LegacyFieldFacetCloudTest extends 
LegacyAbstractAnalyticsFacetCloudTest {
   public static final int INT = 71;
   public static final int LONG = 36;
diff --git 
a/solr/contrib/analytics/src/test/org/apache/solr/analytics/legacy/facet/LegacyRangeFacetCloudTest.java
 
b/solr/contrib/analytics/src/test/org/apache/solr/analytics/legacy/facet/LegacyRangeFacetCloudTest.java
index 0de58e2..8011a00 100644
--- 
a/solr/contrib/analytics/src/test/org/apache/solr/analytics/legacy/facet/LegacyRangeFacetCloudTest.java
+++ 
b/solr/contrib/analytics/src/test/org/apache/solr/analytics/legacy/facet/LegacyRangeFacetCloudTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.analytics.legacy.facet;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -24,7 +25,7 @@ import org.apache.solr.common.util.NamedList;
 import org.junit.Before;
 import org.junit.Test;
 
-
+@ThreadLeakLingering(linger = 0)
 public class LegacyRangeFacetCloudTest extends 
LegacyAbstractAnalyticsFacetCloudTest{
   public static final int INT = 71;
   public static final int LONG = 36;
diff --git 
a/solr/contrib/analytics/src/test/org/apache/solr/analytics/util/OldAnalyticsRequestConverterUnitTest.java
 
b/solr/contrib/analytics/src/test/org/apache/solr/analytics/util/OldAnalyticsRequestConverterUnitTest.java
index d7a2b47..e1ab3ef 100644
--- 
a/solr/contrib/analytics/src/test/org/apache/solr/analytics/util/OldAnalyticsRequestConverterUnitTest.java
+++ 
b/solr/contrib/analytics/src/test/org/apache/solr/analytics/util/OldAnalyticsRequestConverterUnitTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.solr.analytics.util;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import org.apache.solr.analytics.legacy.facet.LegacyAbstractAnalyticsFacetTest;
 import org.apache.solr.common.params.SolrParams;
 import org.junit.BeforeClass;
@@ -29,6 +30,7 @@ import static 
org.apache.solr.analytics.AnalyticsRequestParser.AnalyticsValueFac
 import org.apache.solr.analytics.AnalyticsRequestParser.AnalyticsFacetRequest;
 import 
org.apache.solr.analytics.AnalyticsRequestParser.AnalyticsRangeFacetRequest;
 
+@ThreadLeakLingering(linger = 10)
 public class OldAnalyticsRequestConverterUnitTest extends 
LegacyAbstractAnalyticsFacetTest {
   String fileName = "facetWithDottedFields.txt";
 
diff --git 
a/solr/contrib/gcs-repository/src/test/org/apache/solr/gcs/GCSIncrementalBackupTest.java
 
b/solr/contrib/gcs-repository/src/test/org/apache/solr/gcs/GCSIncrementalBackupTest.java
index f1389af..f89e10a 100644
--- 
a/solr/contrib/gcs-repository/src/test/org/apache/solr/gcs/GCSIncrementalBackupTest.java
+++ 
b/solr/contrib/gcs-repository/src/test/org/apache/solr/gcs/GCSIncrementalBackupTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.solr.gcs;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.solr.cloud.api.collections.AbstractIncrementalBackupTest;
 import org.junit.AfterClass;
@@ -26,6 +27,7 @@ import org.slf4j.LoggerFactory;
 
 import java.lang.invoke.MethodHandles;
 
+@ThreadLeakLingering(linger = 10)
 @LuceneTestCase.SuppressCodecs({"SimpleText"}) // Backups do checksum 
validation against a footer value not present in 'SimpleText'
 public class GCSIncrementalBackupTest extends AbstractIncrementalBackupTest {
     private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
diff --git 
a/solr/contrib/jaegertracer-configurator/src/test/org/apache/solr/jaeger/TestJaegerConfigurator.java
 
b/solr/contrib/jaegertracer-configurator/src/test/org/apache/solr/jaeger/TestJaegerConfigurator.java
index 011b138..78e44a2 100644
--- 
a/solr/contrib/jaegertracer-configurator/src/test/org/apache/solr/jaeger/TestJaegerConfigurator.java
+++ 
b/solr/contrib/jaegertracer-configurator/src/test/org/apache/solr/jaeger/TestJaegerConfigurator.java
@@ -17,6 +17,7 @@
 
 package org.apache.solr.jaeger;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule;
 import io.opentracing.util.GlobalTracer;
 import java.util.concurrent.TimeUnit;
@@ -33,6 +34,7 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TestRule;
 
+@ThreadLeakLingering(linger = 10)
 public class TestJaegerConfigurator extends SolrTestCaseJ4 {
 
   @Rule public TestRule solrTestRules = new SystemPropertiesRestoreRule();
diff --git 
a/solr/contrib/langid/src/test/org/apache/solr/update/processor/OpenNLPLangDetectUpdateProcessorFactoryTest.java
 
b/solr/contrib/langid/src/test/org/apache/solr/update/processor/OpenNLPLangDetectUpdateProcessorFactoryTest.java
index 7b95e6f..3016324 100644
--- 
a/solr/contrib/langid/src/test/org/apache/solr/update/processor/OpenNLPLangDetectUpdateProcessorFactoryTest.java
+++ 
b/solr/contrib/langid/src/test/org/apache/solr/update/processor/OpenNLPLangDetectUpdateProcessorFactoryTest.java
@@ -17,11 +17,13 @@
 
 package org.apache.solr.update.processor;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.request.SolrQueryRequest;
 import org.junit.Test;
 
+@ThreadLeakLingering(linger = 0)
 public class OpenNLPLangDetectUpdateProcessorFactoryTest extends 
LanguageIdentifierUpdateProcessorFactoryTestCase {
   private static final String TEST_MODEL = 
"opennlp-langdetect.eng-swe-spa-rus-deu.bin";
   
diff --git 
a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTROnSolrCloud.java 
b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTROnSolrCloud.java
index e6fc0c8..328dcae 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTROnSolrCloud.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTROnSolrCloud.java
@@ -15,6 +15,7 @@
  */
 package org.apache.solr.ltr;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.io.File;
 import java.util.Collections;
 import java.util.List;
@@ -43,6 +44,7 @@ import org.junit.Test;
 
 import static java.util.stream.Collectors.toList;
 
+@ThreadLeakLingering(linger = 10)
 public class TestLTROnSolrCloud extends TestRerankBase {
 
   private MiniSolrCloudCluster solrCluster;
diff --git 
a/solr/contrib/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/SolrCloudScraperTest.java
 
b/solr/contrib/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/SolrCloudScraperTest.java
index 3514c20..2719e0b 100644
--- 
a/solr/contrib/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/SolrCloudScraperTest.java
+++ 
b/solr/contrib/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/SolrCloudScraperTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.solr.prometheus.scraper;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -47,6 +48,7 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
+@ThreadLeakLingering(linger = 10)
 public class SolrCloudScraperTest extends PrometheusExporterTestBase {
 
   private MetricsConfiguration configuration;
diff --git 
a/solr/contrib/s3-repository/src/test/org/apache/solr/s3/S3IncrementalBackupTest.java
 
b/solr/contrib/s3-repository/src/test/org/apache/solr/s3/S3IncrementalBackupTest.java
index 60ee8a8..7d71bef 100644
--- 
a/solr/contrib/s3-repository/src/test/org/apache/solr/s3/S3IncrementalBackupTest.java
+++ 
b/solr/contrib/s3-repository/src/test/org/apache/solr/s3/S3IncrementalBackupTest.java
@@ -18,6 +18,7 @@
 package org.apache.solr.s3;
 
 import com.adobe.testing.s3mock.junit4.S3MockRule;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.lang.invoke.MethodHandles;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.solr.cloud.api.collections.AbstractIncrementalBackupTest;
@@ -27,9 +28,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import software.amazon.awssdk.regions.Region;
 
[email protected]({
-  "SimpleText"
-}) // Backups do checksum validation against a footer value not present in 
'SimpleText'
+// Backups do checksum validation against a footer value not present in 
'SimpleText'
[email protected]({"SimpleText"})
+@ThreadLeakLingering(linger = 10)
 public class S3IncrementalBackupTest extends AbstractIncrementalBackupTest {
   private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/HttpPartitionWithTlogReplicasTest.java
 
b/solr/core/src/test/org/apache/solr/cloud/HttpPartitionWithTlogReplicasTest.java
index 7e101a3..f7bf65c 100644
--- 
a/solr/core/src/test/org/apache/solr/cloud/HttpPartitionWithTlogReplicasTest.java
+++ 
b/solr/core/src/test/org/apache/solr/cloud/HttpPartitionWithTlogReplicasTest.java
@@ -17,11 +17,13 @@
 
 package org.apache.solr.cloud;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.solr.SolrTestCaseJ4;
 
 @LuceneTestCase.Slow
 @SolrTestCaseJ4.SuppressSSL(bugUrl = 
"https://issues.apache.org/jira/browse/SOLR-5776";)
+@ThreadLeakLingering(linger = 10)
 public class HttpPartitionWithTlogReplicasTest extends HttpPartitionTest {
 
   @Override
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestCloudConsistency.java 
b/solr/core/src/test/org/apache/solr/cloud/TestCloudConsistency.java
index 9da145e..4829773 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestCloudConsistency.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestCloudConsistency.java
@@ -17,6 +17,7 @@
 
 package org.apache.solr.cloud;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.net.URI;
@@ -44,6 +45,7 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@ThreadLeakLingering(linger = 10)
 public class TestCloudConsistency extends SolrCloudTestCase {
 
   private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/TestLeaderElectionZkExpiry.java 
b/solr/core/src/test/org/apache/solr/cloud/TestLeaderElectionZkExpiry.java
index 6bac5e8..83fba71 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestLeaderElectionZkExpiry.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestLeaderElectionZkExpiry.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.cloud;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.lang.invoke.MethodHandles;
 import java.nio.file.Path;
 import java.util.Collections;
@@ -30,6 +31,7 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@ThreadLeakLingering(linger = 30)
 public class TestLeaderElectionZkExpiry extends SolrTestCaseJ4 {
 
   private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@@ -64,7 +66,9 @@ public class TestLeaderElectionZkExpiry extends 
SolrTestCaseJ4 {
               server.expire(sessionId);
               try {
                 Thread.sleep(10);
-              } catch (InterruptedException e)  {}
+              } catch (InterruptedException e)  {
+                return;
+              }
             }
           }
         };
@@ -92,8 +96,8 @@ public class TestLeaderElectionZkExpiry extends 
SolrTestCaseJ4 {
         zkController.close();
       }
     } finally {
-      if (zc != null) zc.close();
       cc.shutdown();
+      if (zc != null) zc.close();
       server.shutdown();
     }
   }
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestStressLiveNodes.java 
b/solr/core/src/test/org/apache/solr/cloud/TestStressLiveNodes.java
index 06be968..0a425e2 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestStressLiveNodes.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestStressLiveNodes.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.cloud;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.lang.invoke.MethodHandles;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -46,6 +47,7 @@ import org.slf4j.LoggerFactory;
  * Does bursts of adds to live_nodes using parallel threads to and verifies 
that after each 
  * burst a ZkStateReader detects the correct set.
  */
+@ThreadLeakLingering(linger = 10)
 @Slow
 public class TestStressLiveNodes extends SolrCloudTestCase {
 
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/api/collections/HdfsCloudIncrementalBackupTest.java
 
b/solr/core/src/test/org/apache/solr/cloud/api/collections/HdfsCloudIncrementalBackupTest.java
index c0d51d9..8bf410e 100644
--- 
a/solr/core/src/test/org/apache/solr/cloud/api/collections/HdfsCloudIncrementalBackupTest.java
+++ 
b/solr/core/src/test/org/apache/solr/cloud/api/collections/HdfsCloudIncrementalBackupTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.solr.cloud.api.collections;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.io.IOException;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -28,6 +29,8 @@ import org.apache.hadoop.hdfs.DistributedFileSystem;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
 import org.apache.hadoop.hdfs.protocol.HdfsConstants;
 import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.QuickPatchThreadsFilter;
+import org.apache.solr.SolrIgnoredThreadsFilter;
 import org.apache.solr.cloud.hdfs.HdfsTestUtil;
 import org.apache.solr.common.util.IOUtils;
 import org.apache.solr.util.BadHdfsThreadsFilter;
@@ -36,8 +39,11 @@ import org.junit.BeforeClass;
 
 @LuceneTestCase.SuppressCodecs({"SimpleText"}) // Backups do checksum 
validation against a footer value not present in 'SimpleText'
 @ThreadLeakFilters(defaultFilters = true, filters = {
-        BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
+    SolrIgnoredThreadsFilter.class,
+    QuickPatchThreadsFilter.class,
+    BadHdfsThreadsFilter.class
 })
+@ThreadLeakLingering(linger = 10)
 public class HdfsCloudIncrementalBackupTest extends 
AbstractIncrementalBackupTest{
     public static final String SOLR_XML = "<solr>\n" +
             "\n" +
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/api/collections/TestHdfsCloudBackupRestore.java
 
b/solr/core/src/test/org/apache/solr/cloud/api/collections/TestHdfsCloudBackupRestore.java
index a7f7c6d..28c6b7b 100644
--- 
a/solr/core/src/test/org/apache/solr/cloud/api/collections/TestHdfsCloudBackupRestore.java
+++ 
b/solr/core/src/test/org/apache/solr/cloud/api/collections/TestHdfsCloudBackupRestore.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.cloud.api.collections;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.net.URI;
@@ -67,6 +68,7 @@ import static 
org.apache.solr.core.backup.BackupManager.ZK_STATE_DIR;
     QuickPatchThreadsFilter.class,
     BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
 })
+@ThreadLeakLingering(linger = 30)
 public class TestHdfsCloudBackupRestore extends 
AbstractCloudBackupRestoreTestCase {
   public static final String SOLR_XML = "<solr>\n" +
       "\n" +
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/hdfs/HDFSCollectionsAPITest.java 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HDFSCollectionsAPITest.java
index 9386b91..b5a387e3 100644
--- a/solr/core/src/test/org/apache/solr/cloud/hdfs/HDFSCollectionsAPITest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/hdfs/HDFSCollectionsAPITest.java
@@ -18,6 +18,7 @@
 package org.apache.solr.cloud.hdfs;
 
 import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.QuickPatchThreadsFilter;
@@ -39,6 +40,7 @@ import org.junit.BeforeClass;
     BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
 })
 @LuceneTestCase.AwaitsFix(bugUrl = "SOLR-15405")
+@ThreadLeakLingering(linger = 10)
 public class HDFSCollectionsAPITest extends SolrCloudTestCase {
 
   private static MiniDFSCluster dfsCluster;
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsBasicDistributedZk2Test.java
 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsBasicDistributedZk2Test.java
index db0df8f..0e3d5bd 100644
--- 
a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsBasicDistributedZk2Test.java
+++ 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsBasicDistributedZk2Test.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.cloud.hdfs;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.io.IOException;
 
 import org.apache.hadoop.hdfs.MiniDFSCluster;
@@ -37,6 +38,7 @@ import 
com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
     QuickPatchThreadsFilter.class,
     BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
 })
+@ThreadLeakLingering(linger = 10)
 public class HdfsBasicDistributedZk2Test extends BasicDistributedZk2Test {
   private static MiniDFSCluster dfsCluster;
   
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsBasicDistributedZkTest.java 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsBasicDistributedZkTest.java
index bc172b3..606402a 100644
--- 
a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsBasicDistributedZkTest.java
+++ 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsBasicDistributedZkTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.cloud.hdfs;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.io.IOException;
 
 import org.apache.hadoop.hdfs.MiniDFSCluster;
@@ -37,6 +38,7 @@ import 
com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
     QuickPatchThreadsFilter.class,
     BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
 })
+@ThreadLeakLingering(linger = 10)
 public class HdfsBasicDistributedZkTest extends BasicDistributedZkTest {
   private static MiniDFSCluster dfsCluster;
   
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsChaosMonkeyNothingIsSafeTest.java
 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsChaosMonkeyNothingIsSafeTest.java
index 94ace06..1608904 100644
--- 
a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsChaosMonkeyNothingIsSafeTest.java
+++ 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsChaosMonkeyNothingIsSafeTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.cloud.hdfs;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.io.IOException;
 
 import org.apache.hadoop.hdfs.MiniDFSCluster;
@@ -37,6 +38,7 @@ import 
com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
     QuickPatchThreadsFilter.class,
     BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
 })
+@ThreadLeakLingering(linger = 10)
 public class HdfsChaosMonkeyNothingIsSafeTest extends 
ChaosMonkeyNothingIsSafeTest {
   private static MiniDFSCluster dfsCluster;
   
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsChaosMonkeySafeLeaderTest.java
 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsChaosMonkeySafeLeaderTest.java
index 402d5cf..a92914b 100644
--- 
a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsChaosMonkeySafeLeaderTest.java
+++ 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsChaosMonkeySafeLeaderTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.cloud.hdfs;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.io.IOException;
 
 import org.apache.hadoop.hdfs.MiniDFSCluster;
@@ -37,6 +38,7 @@ import 
com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
     QuickPatchThreadsFilter.class,
     BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
 })
+@ThreadLeakLingering(linger = 10)
 public class HdfsChaosMonkeySafeLeaderTest extends ChaosMonkeySafeLeaderTest {
   private static MiniDFSCluster dfsCluster;
   
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsNNFailoverTest.java 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsNNFailoverTest.java
index f70335d..30a25ea 100644
--- a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsNNFailoverTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsNNFailoverTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.cloud.hdfs;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.io.IOException;
 
 import org.apache.hadoop.hdfs.MiniDFSCluster;
@@ -36,6 +37,7 @@ import 
com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
     QuickPatchThreadsFilter.class,
     BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
 })
+@ThreadLeakLingering(linger = 40)
 public class HdfsNNFailoverTest extends BasicDistributedZkTest {
   private static final String COLLECTION = "collection";
   private static MiniDFSCluster dfsCluster;
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsRecoverLeaseTest.java 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsRecoverLeaseTest.java
index 8d8833f..ad0b4af 100644
--- a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsRecoverLeaseTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsRecoverLeaseTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.cloud.hdfs;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.io.IOException;
 import java.net.URI;
 import java.util.HashSet;
@@ -45,6 +46,7 @@ import 
com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
     QuickPatchThreadsFilter.class,
     BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
 })
+@ThreadLeakLingering(linger = 40)
 public class HdfsRecoverLeaseTest extends SolrTestCaseJ4 {
   
   private static MiniDFSCluster dfsCluster;
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsRecoveryZkTest.java 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsRecoveryZkTest.java
index 45192fe..5c9c506 100644
--- a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsRecoveryZkTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsRecoveryZkTest.java
@@ -17,6 +17,7 @@
 package org.apache.solr.cloud.hdfs;
 
 import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
 import org.apache.lucene.util.LuceneTestCase.Nightly;
 import org.apache.lucene.util.LuceneTestCase.Slow;
@@ -34,6 +35,7 @@ import org.junit.BeforeClass;
     QuickPatchThreadsFilter.class,
     BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
 })
+@ThreadLeakLingering(linger = 10)
 public class HdfsRecoveryZkTest extends RecoveryZkTest {
   private static MiniDFSCluster dfsCluster;
   
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsRestartWhileUpdatingTest.java
 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsRestartWhileUpdatingTest.java
index ebc6068..8f16b77 100644
--- 
a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsRestartWhileUpdatingTest.java
+++ 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsRestartWhileUpdatingTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.cloud.hdfs;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
 import org.apache.lucene.util.QuickPatchThreadsFilter;
 import org.apache.lucene.util.LuceneTestCase.Slow;
@@ -35,6 +36,7 @@ import 
com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
     QuickPatchThreadsFilter.class,
     BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
 })
+@ThreadLeakLingering(linger = 10)
 public class HdfsRestartWhileUpdatingTest extends RestartWhileUpdatingTest {
   private static MiniDFSCluster dfsCluster;
 
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsSyncSliceTest.java 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsSyncSliceTest.java
index 31ecad8..82ff90d9 100644
--- a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsSyncSliceTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsSyncSliceTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.cloud.hdfs;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.io.IOException;
 
 import org.apache.hadoop.hdfs.MiniDFSCluster;
@@ -37,6 +38,7 @@ import 
com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
     QuickPatchThreadsFilter.class,
     BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
 })
+@ThreadLeakLingering(linger = 10)
 public class HdfsSyncSliceTest extends SyncSliceTest {
   private static MiniDFSCluster dfsCluster;
   
diff --git a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsTestUtil.java 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsTestUtil.java
index 3872167..1babbe29 100644
--- a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsTestUtil.java
+++ b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsTestUtil.java
@@ -321,6 +321,8 @@ public class HdfsTestUtil {
           }
         }
         try {
+          dfsCluster.getDataNodes().forEach(dataNode -> dataNode.shutdown());
+          dfsCluster.shutdownNameNodes();
           dfsCluster.shutdown(true);
         } catch (Error e) {
           // Added in SOLR-7134
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsThreadLeakTest.java 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsThreadLeakTest.java
index 2e04ee0..f79c618 100644
--- a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsThreadLeakTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsThreadLeakTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.cloud.hdfs;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.io.IOException;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FSDataOutputStream;
@@ -38,6 +39,7 @@ import 
com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
     QuickPatchThreadsFilter.class,
     BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
 })
+@ThreadLeakLingering(linger = 30)
 public class HdfsThreadLeakTest extends SolrTestCaseJ4 {
   private static MiniDFSCluster dfsCluster;
 
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsTlogReplayBufferedWhileIndexingTest.java
 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsTlogReplayBufferedWhileIndexingTest.java
index 42cfcaa..278c304 100644
--- 
a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsTlogReplayBufferedWhileIndexingTest.java
+++ 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsTlogReplayBufferedWhileIndexingTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.cloud.hdfs;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
 import org.apache.lucene.util.QuickPatchThreadsFilter;
 import org.apache.lucene.util.LuceneTestCase.Slow;
@@ -35,6 +36,7 @@ import 
com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
     QuickPatchThreadsFilter.class,
     BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
 })
+@ThreadLeakLingering(linger = 10)
 public class HdfsTlogReplayBufferedWhileIndexingTest extends 
TlogReplayBufferedWhileIndexingTest {
   private static MiniDFSCluster dfsCluster;
 
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsUnloadDistributedZkTest.java
 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsUnloadDistributedZkTest.java
index 5944097..5e1f739 100644
--- 
a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsUnloadDistributedZkTest.java
+++ 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsUnloadDistributedZkTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.cloud.hdfs;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
 import org.apache.lucene.util.QuickPatchThreadsFilter;
 import org.apache.lucene.util.LuceneTestCase.Slow;
@@ -35,6 +36,7 @@ import 
com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
     QuickPatchThreadsFilter.class,
     BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
 })
+@ThreadLeakLingering(linger = 10)
 public class HdfsUnloadDistributedZkTest extends UnloadDistributedZkTest {
   private static MiniDFSCluster dfsCluster;
   
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsWriteToMultipleCollectionsTest.java
 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsWriteToMultipleCollectionsTest.java
index 46eb56a..a4ed792 100644
--- 
a/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsWriteToMultipleCollectionsTest.java
+++ 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/HdfsWriteToMultipleCollectionsTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.cloud.hdfs;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -61,6 +62,7 @@ import org.junit.Test;
     QuickPatchThreadsFilter.class,
     BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
 })
+@ThreadLeakLingering(linger = 10)
 public class HdfsWriteToMultipleCollectionsTest extends BasicDistributedZkTest 
{
   private static final String ACOLLECTION = "acollection";
   private static MiniDFSCluster dfsCluster;
diff --git a/solr/core/src/test/org/apache/solr/cloud/hdfs/StressHdfsTest.java 
b/solr/core/src/test/org/apache/solr/cloud/hdfs/StressHdfsTest.java
index 551056c..dd0193b 100644
--- a/solr/core/src/test/org/apache/solr/cloud/hdfs/StressHdfsTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/hdfs/StressHdfsTest.java
@@ -19,6 +19,7 @@ package org.apache.solr.cloud.hdfs;
 import com.carrotsearch.randomizedtesting.annotations.Nightly;
 import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
@@ -62,6 +63,7 @@ import java.util.concurrent.TimeUnit;
     QuickPatchThreadsFilter.class,
     BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
 })
+@ThreadLeakLingering(linger = 10)
 public class StressHdfsTest extends BasicDistributedZkTest {
   private static final String DELETE_DATA_DIR_COLLECTION = "delete_data_dir";
   private static MiniDFSCluster dfsCluster;
diff --git 
a/solr/core/src/test/org/apache/solr/cluster/events/ClusterEventProducerTest.java
 
b/solr/core/src/test/org/apache/solr/cluster/events/ClusterEventProducerTest.java
index 0ac7c4f..a96e209 100644
--- 
a/solr/core/src/test/org/apache/solr/cluster/events/ClusterEventProducerTest.java
+++ 
b/solr/core/src/test/org/apache/solr/cluster/events/ClusterEventProducerTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.solr.cluster.events;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import org.apache.solr.client.solrj.embedded.JettySolrRunner;
 import org.apache.solr.client.solrj.request.CollectionAdminRequest;
 import org.apache.solr.client.solrj.request.V2Request;
@@ -51,7 +52,8 @@ import static java.util.Collections.singletonMap;
 import static org.apache.solr.client.solrj.SolrRequest.METHOD.GET;
 import static org.apache.solr.client.solrj.SolrRequest.METHOD.POST;
 
-/**
+
+@ThreadLeakLingering(linger = 0)/**
  *
  */
 @LogLevel("org.apache.solr.cluster.events=DEBUG")
diff --git 
a/solr/core/src/test/org/apache/solr/core/HdfsDirectoryFactoryTest.java 
b/solr/core/src/test/org/apache/solr/core/HdfsDirectoryFactoryTest.java
index 4253176..87337fa 100644
--- a/solr/core/src/test/org/apache/solr/core/HdfsDirectoryFactoryTest.java
+++ b/solr/core/src/test/org/apache/solr/core/HdfsDirectoryFactoryTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.core;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.nio.file.Path;
@@ -59,6 +60,7 @@ import 
com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
     QuickPatchThreadsFilter.class,
     BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
 })
+@ThreadLeakLingering(linger = 10)
 public class HdfsDirectoryFactoryTest extends SolrTestCaseJ4 {
   private static MiniDFSCluster dfsCluster;
   
diff --git 
a/solr/core/src/test/org/apache/solr/core/backup/repository/HdfsBackupRepositoryIntegrationTest.java
 
b/solr/core/src/test/org/apache/solr/core/backup/repository/HdfsBackupRepositoryIntegrationTest.java
index 3d6ab69..a395435 100644
--- 
a/solr/core/src/test/org/apache/solr/core/backup/repository/HdfsBackupRepositoryIntegrationTest.java
+++ 
b/solr/core/src/test/org/apache/solr/core/backup/repository/HdfsBackupRepositoryIntegrationTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.solr.core.backup.repository;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.io.IOException;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -41,6 +42,7 @@ import org.junit.BeforeClass;
 @ThreadLeakFilters(defaultFilters = true, filters = {
         BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
 })
+@ThreadLeakLingering(linger = 10)
 public class HdfsBackupRepositoryIntegrationTest extends 
AbstractBackupRepositoryTest {
     private static MiniDFSCluster dfsCluster;
     private static String hdfsUri;
diff --git a/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java 
b/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java
index 90d2388..8949d6c 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.handler;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.nio.ByteBuffer;
@@ -50,6 +51,7 @@ import org.slf4j.LoggerFactory;
 import static java.util.Arrays.asList;
 import static org.apache.solr.common.util.Utils.fromJSONString;
 
+@ThreadLeakLingering(linger = 0)
 public class TestBlobHandler extends AbstractFullDistribZkTestBase {
   private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
diff --git 
a/solr/core/src/test/org/apache/solr/handler/TestHdfsBackupRestoreCore.java 
b/solr/core/src/test/org/apache/solr/handler/TestHdfsBackupRestoreCore.java
index e4168e3..b7a70a5 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestHdfsBackupRestoreCore.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestHdfsBackupRestoreCore.java
@@ -17,6 +17,7 @@
 package org.apache.solr.handler;
 
 import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import org.apache.commons.io.IOUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileStatus;
@@ -63,6 +64,7 @@ import java.util.Map;
     BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
 })
 @SolrTestCaseJ4.SuppressSSL     // Currently unknown why SSL does not work 
with this test
+@ThreadLeakLingering(linger = 40)
 public class TestHdfsBackupRestoreCore extends SolrCloudTestCase {
   public static final String HDFS_REPO_SOLR_XML = "<solr>\n" +
       "\n" +
diff --git 
a/solr/core/src/test/org/apache/solr/handler/admin/DaemonStreamApiTest.java 
b/solr/core/src/test/org/apache/solr/handler/admin/DaemonStreamApiTest.java
index 34227ae..91eef72 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/DaemonStreamApiTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/DaemonStreamApiTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.solr.handler.admin;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -40,6 +41,7 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
+@ThreadLeakLingering(linger = 60)
 public class DaemonStreamApiTest extends SolrTestCaseJ4 {
 
   private MiniSolrCloudCluster cluster;
diff --git 
a/solr/core/src/test/org/apache/solr/handler/admin/MBeansHandlerTest.java 
b/solr/core/src/test/org/apache/solr/handler/admin/MBeansHandlerTest.java
index 22cb378..2a7a2a0 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/MBeansHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/MBeansHandlerTest.java
@@ -194,5 +194,8 @@ public class MBeansHandlerTest extends SolrTestCaseJ4 {
     counter.await(30, TimeUnit.SECONDS);
     runSnapshots = false;
     bean.close();
+
+    reader.join();
+    modifier.join();
   }
 }
diff --git 
a/solr/core/src/test/org/apache/solr/handler/component/DistributedQueryComponentCustomSortTest.java
 
b/solr/core/src/test/org/apache/solr/handler/component/DistributedQueryComponentCustomSortTest.java
index da467c2..c9d8661 100644
--- 
a/solr/core/src/test/org/apache/solr/handler/component/DistributedQueryComponentCustomSortTest.java
+++ 
b/solr/core/src/test/org/apache/solr/handler/component/DistributedQueryComponentCustomSortTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.handler.component;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import org.apache.solr.BaseDistributedSearchTestCase;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.response.QueryResponse;
@@ -33,6 +34,7 @@ import java.util.Objects;
  *
  * @see org.apache.solr.handler.component.QueryComponent
  */
+@ThreadLeakLingering(linger = 10)
 public class DistributedQueryComponentCustomSortTest extends 
BaseDistributedSearchTestCase {
 
   public DistributedQueryComponentCustomSortTest() {
diff --git 
a/solr/core/src/test/org/apache/solr/store/hdfs/HdfsDirectoryTest.java 
b/solr/core/src/test/org/apache/solr/store/hdfs/HdfsDirectoryTest.java
index 7720046..a58c3ec 100644
--- a/solr/core/src/test/org/apache/solr/store/hdfs/HdfsDirectoryTest.java
+++ b/solr/core/src/test/org/apache/solr/store/hdfs/HdfsDirectoryTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.store.hdfs;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.io.IOException;
 import java.nio.file.FileAlreadyExistsException;
 import java.util.HashSet;
@@ -48,6 +49,7 @@ import 
com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
     QuickPatchThreadsFilter.class,
     BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
 })
+@ThreadLeakLingering(linger = 20)
 public class HdfsDirectoryTest extends SolrTestCaseJ4 {
   
   private static final int MAX_NUMBER_OF_WRITES = 10000;
diff --git 
a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/JDBCStreamTest.java
 
b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/JDBCStreamTest.java
index a7abfad..0adeba1 100644
--- 
a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/JDBCStreamTest.java
+++ 
b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/JDBCStreamTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.client.solrj.io.stream;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.io.IOException;
 import java.sql.Connection;
 import java.sql.DriverManager;
@@ -53,6 +54,7 @@ import org.junit.Test;
 
 @SuppressPointFields(bugUrl="https://issues.apache.org/jira/browse/SOLR-10960";)
 @LuceneTestCase.SuppressCodecs({"Lucene3x", 
"Lucene40","Lucene41","Lucene42","Lucene45"})
+@ThreadLeakLingering(linger = 0)
 public class JDBCStreamTest extends SolrCloudTestCase {
 
   private static final String COLLECTIONORALIAS = "jdbc";
diff --git 
a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionTest.java
 
b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionTest.java
index c03476a..4c2b766 100644
--- 
a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionTest.java
+++ 
b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.client.solrj.io.stream;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.io.*;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
@@ -58,6 +59,7 @@ import org.junit.Test;
 @Slow
 @SolrTestCaseJ4.SuppressSSL
 @LuceneTestCase.SuppressCodecs({"Lucene3x", 
"Lucene40","Lucene41","Lucene42","Lucene45"})
+@ThreadLeakLingering(linger = 0)
 public class StreamExpressionTest extends SolrCloudTestCase {
 
   private static final String COLLECTIONORALIAS = "collection1";
diff --git 
a/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestV2Request.java 
b/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestV2Request.java
index 9c459d5..c0f89c8 100644
--- 
a/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestV2Request.java
+++ 
b/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestV2Request.java
@@ -17,6 +17,7 @@
 
 package org.apache.solr.client.solrj.request;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.util.List;
@@ -36,6 +37,7 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@ThreadLeakLingering(linger = 0)
 public class TestV2Request extends SolrCloudTestCase {
   private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
diff --git 
a/solr/test-framework/src/java/org/apache/solr/SolrIgnoredThreadsFilter.java 
b/solr/test-framework/src/java/org/apache/solr/SolrIgnoredThreadsFilter.java
index 3fce31d..01974f7 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrIgnoredThreadsFilter.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrIgnoredThreadsFilter.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr;
 
+import java.lang.Thread.State;
 import org.apache.lucene.search.TimeLimitingCollector.TimerThread;
 
 import com.carrotsearch.randomizedtesting.ThreadFilter;
@@ -30,7 +31,7 @@ public class SolrIgnoredThreadsFilter implements ThreadFilter 
{
   public boolean reject(Thread t) {
     /*
      * IMPORTANT! IMPORTANT!
-     * 
+     *
      * Any threads added here should have ABSOLUTELY NO SIDE EFFECTS
      * (should be stateless). This includes no references to cores or other
      * test-dependent information.
@@ -40,31 +41,47 @@ public class SolrIgnoredThreadsFilter implements 
ThreadFilter {
     if (threadName.equals(TimerThread.THREAD_NAME)) {
       return true;
     }
-    
+
     // due to netty - will stop on it's own
     if (threadName.startsWith("globalEventExecutor")) {
       return true;
     }
-    
+
     // HttpClient Connection evictor threads can take a moment to wake and 
shutdown
     if (threadName.startsWith("Connection evictor")) {
       return true;
     }
-    
+
     // These is a java pool for the collection stream api
     if (threadName.startsWith("ForkJoinPool.")) {
       return true;
     }
-    
+
     if (threadName.startsWith("Image Fetcher")) {
       return true;
     }
-    
+
     if (threadName.startsWith("Log4j2-TF-2-AsyncLoggerConfig")) {
       return true;
     }
-    
 
-    return false;
+
+    if (threadName.startsWith("SessionTracker")) {
+      return true;
+    }
+
+    if (threadName.startsWith("zkConnectionManagerCallback") && t.getState() 
== State.TIMED_WAITING) {
+      return true;
+    }
+
+    if (threadName.startsWith("DaemonStream")) {
+      return true;
+    }
+
+    if (threadName.startsWith("async-check-index-")) {
+      return true;
+    }
+    
+    return threadName.startsWith("closeThreadPool");
   }
 }
diff --git a/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java 
b/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java
index d9101e6..21fc34f 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java
@@ -62,7 +62,7 @@ import 
com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
         SolrIgnoredThreadsFilter.class,
         QuickPatchThreadsFilter.class
 })
-@ThreadLeakLingering(linger = 10000)
+@ThreadLeakLingering(linger = 0)
 public class SolrTestCase extends LuceneTestCase {
 
   private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
diff --git 
a/solr/test-framework/src/java/org/apache/solr/util/BadHdfsThreadsFilter.java 
b/solr/test-framework/src/java/org/apache/solr/util/BadHdfsThreadsFilter.java
index c0c4a36..22b3587 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/util/BadHdfsThreadsFilter.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/util/BadHdfsThreadsFilter.java
@@ -39,6 +39,8 @@ public class BadHdfsThreadsFilter implements ThreadFilter {
       return true;
     } else if (name.startsWith("solr-hdfs-threadpool-")) { // SOLR-9515 and 
HDFS-14251
       return true;
+    } else if (name.startsWith("nioEventLoopGroup")) {
+      return true; // netty threads waiting for a web server stop confirm that 
won't happen
     }
     
     return false;
diff --git 
a/solr/test-framework/src/test/org/apache/solr/cloud/MiniSolrCloudClusterTest.java
 
b/solr/test-framework/src/test/org/apache/solr/cloud/MiniSolrCloudClusterTest.java
index fcba6b4..193e9ec 100644
--- 
a/solr/test-framework/src/test/org/apache/solr/cloud/MiniSolrCloudClusterTest.java
+++ 
b/solr/test-framework/src/test/org/apache/solr/cloud/MiniSolrCloudClusterTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.solr.cloud;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import java.io.IOException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -36,6 +37,7 @@ import org.junit.Test;
 import org.junit.rules.RuleChain;
 import org.junit.rules.TestRule;
 
+@ThreadLeakLingering(linger = 10)
 @LuceneTestCase.SuppressSysoutChecks(bugUrl = "Solr logs to JUL")
 @SolrTestCaseJ4.SuppressSSL(bugUrl = 
"https://issues.apache.org/jira/browse/SOLR-15026";)
 public class MiniSolrCloudClusterTest extends SolrTestCaseJ4 {

Reply via email to