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/07/24 02:34:16 UTC

[lucene-solr] branch reference_impl updated: @319 Tests that produce a lot of garbage.

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

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


The following commit(s) were added to refs/heads/reference_impl by this push:
     new 1508063  @319 Tests that produce a lot of garbage.
1508063 is described below

commit 1508063988595bae7ad64d3525a2cf516f4dbc60
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Thu Jul 23 21:34:02 2020 -0500

    @319 Tests that produce a lot of garbage.
---
 .../solr/handler/component/HttpShardHandler.java   |  3 ++-
 .../solr/legacy/TestNumericRangeQuery32.java       |  2 ++
 .../org/apache/solr/search/TestSolr4Spatial.java   |  2 ++
 .../src/test/org/apache/solr/search/TestSort.java  |  2 ++
 .../function/TestMinMaxOnMultiValuedField.java     |  2 ++
 .../solr/uninverting/TestNumericTerms64.java       |  7 ++++---
 .../solr/client/solrj/impl/Http2SolrClient.java    | 23 +++++-----------------
 7 files changed, 19 insertions(+), 22 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java b/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java
index b94e4df..bfae227 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java
@@ -81,7 +81,7 @@ public class HttpShardHandler extends ShardHandler {
   private Set<ShardResponse> asyncPending;
   private Set<Future<ShardResponse>> pending;
   private Map<String,List<String>> shardToURLs;
-  private Http2SolrClient solrClient;
+  private final Http2SolrClient solrClient;
 
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
@@ -264,6 +264,7 @@ public class HttpShardHandler extends ShardHandler {
           if (urls.size() <= 1) {
             String url = urls.get(0);
             srsp.setShardAddress(url);
+            assert solrClient != null;
             try (SolrClient client = new Builder(url).withHttpClient(solrClient).markInternalRequest().build()) {
               ssr.nl = client.request(req);
             }
diff --git a/solr/core/src/test/org/apache/solr/legacy/TestNumericRangeQuery32.java b/solr/core/src/test/org/apache/solr/legacy/TestNumericRangeQuery32.java
index 1b904fe..7dd2e4f 100644
--- a/solr/core/src/test/org/apache/solr/legacy/TestNumericRangeQuery32.java
+++ b/solr/core/src/test/org/apache/solr/legacy/TestNumericRangeQuery32.java
@@ -33,6 +33,7 @@ import org.apache.lucene.search.TopDocs;
 import org.apache.lucene.search.TopFieldCollector;
 import org.apache.lucene.search.TopScoreDocCollector;
 import org.apache.lucene.store.Directory;
+import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.NumericUtils;
 import org.apache.lucene.util.TestUtil;
 import org.apache.solr.SolrTestCase;
@@ -40,6 +41,7 @@ import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
+@LuceneTestCase.Nightly // this test generates a lot of garbage
 public class TestNumericRangeQuery32 extends SolrTestCase {
   // distance of entries
   private static int distance;
diff --git a/solr/core/src/test/org/apache/solr/search/TestSolr4Spatial.java b/solr/core/src/test/org/apache/solr/search/TestSolr4Spatial.java
index 7722664..87778cc 100644
--- a/solr/core/src/test/org/apache/solr/search/TestSolr4Spatial.java
+++ b/solr/core/src/test/org/apache/solr/search/TestSolr4Spatial.java
@@ -20,6 +20,7 @@ import java.text.ParseException;
 import java.util.Arrays;
 
 import com.carrotsearch.randomizedtesting.annotations.ParametersFactory;
+import org.apache.lucene.util.LuceneTestCase;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.core.SolrCore;
@@ -40,6 +41,7 @@ import org.locationtech.spatial4j.shape.Rectangle;
  * Test Solr 4's new spatial capabilities from the new Lucene spatial module. Don't thoroughly test it here because
  * Lucene spatial has its own tests.  Some of these tests were ported from Solr 3 spatial tests.
  */
+@LuceneTestCase.Nightly // this test generates a lot of garbage
 public class TestSolr4Spatial extends SolrTestCaseJ4 {
 
   private final String fieldName;
diff --git a/solr/core/src/test/org/apache/solr/search/TestSort.java b/solr/core/src/test/org/apache/solr/search/TestSort.java
index c95e9b6..13390c2 100644
--- a/solr/core/src/test/org/apache/solr/search/TestSort.java
+++ b/solr/core/src/test/org/apache/solr/search/TestSort.java
@@ -50,6 +50,7 @@ import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.BitDocIdSet;
 import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.FixedBitSet;
+import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.request.SolrQueryRequest;
@@ -59,6 +60,7 @@ import org.junit.BeforeClass;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@LuceneTestCase.Nightly // this test generates a lot of garbage
 public class TestSort extends SolrTestCaseJ4 {
 
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
diff --git a/solr/core/src/test/org/apache/solr/search/function/TestMinMaxOnMultiValuedField.java b/solr/core/src/test/org/apache/solr/search/function/TestMinMaxOnMultiValuedField.java
index f273ba5..9c53727 100644
--- a/solr/core/src/test/org/apache/solr/search/function/TestMinMaxOnMultiValuedField.java
+++ b/solr/core/src/test/org/apache/solr/search/function/TestMinMaxOnMultiValuedField.java
@@ -21,6 +21,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
+import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
 import org.apache.lucene.util.TestUtil;
 import org.apache.solr.SolrTestCaseJ4;
@@ -40,6 +41,7 @@ import org.junit.BeforeClass;
  * Tests the behavior of <code>field(foo,min|max)</code> on numerious types of multivalued 'foo' fields,
  * as well as the beahvior of sorting on <code>foo asc|desc</code> to implicitly choose the min|max.
  */
+@LuceneTestCase.Nightly // this test generates a lot of garbage
 @SuppressCodecs({"SimpleText"}) // see TestSortedSetSelector
 public class TestMinMaxOnMultiValuedField extends SolrTestCaseJ4 {
 
diff --git a/solr/core/src/test/org/apache/solr/uninverting/TestNumericTerms64.java b/solr/core/src/test/org/apache/solr/uninverting/TestNumericTerms64.java
index ab44c42..11fdbe0 100644
--- a/solr/core/src/test/org/apache/solr/uninverting/TestNumericTerms64.java
+++ b/solr/core/src/test/org/apache/solr/uninverting/TestNumericTerms64.java
@@ -40,6 +40,7 @@ import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
+// Tamped down for non Nightly runs as this test generates a large amount of garbage
 public class TestNumericTerms64 extends SolrTestCase {
   // distance of entries
   private static long distance;
@@ -54,12 +55,12 @@ public class TestNumericTerms64 extends SolrTestCase {
   
   @BeforeClass
   public static void beforeClass() throws Exception {
-    noDocs = atLeast(4096);
+    noDocs = atLeast(TEST_NIGHTLY ? 4096 : 256);
     distance = (1L << 60) / noDocs;
     directory = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), directory,
         newIndexWriterConfig(new MockAnalyzer(random()))
-        .setMaxBufferedDocs(TestUtil.nextInt(random(), 100, 1000))
+        .setMaxBufferedDocs(TestUtil.nextInt(random(), TEST_NIGHTLY ? 100 : 990, 1000))
         .setMergePolicy(newLogMergePolicy()));
 
     final LegacyFieldType storedLong = new LegacyFieldType(LegacyLongField.TYPE_NOT_STORED);
@@ -127,7 +128,7 @@ public class TestNumericTerms64 extends SolrTestCase {
     String field="field"+precisionStep;
     // 10 random tests, the index order is ascending,
     // so using a reverse sort field should retun descending documents
-    int num = TestUtil.nextInt(random(), 10, 20);
+    int num = TestUtil.nextInt(random(), 10, TEST_NIGHTLY ? 20 : 14);
     for (int i = 0; i < num; i++) {
       long lower=(long)(random().nextDouble()*noDocs*distance)+startOffset;
       long upper=(long)(random().nextDouble()*noDocs*distance)+startOffset;
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java
index e88e7af..e549ee0 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java
@@ -66,6 +66,7 @@ import org.apache.solr.common.params.QoSParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.params.UpdateParams;
 import org.apache.solr.common.util.Base64;
+import org.apache.solr.common.util.CloseTracker;
 import org.apache.solr.common.util.ContentStream;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.ObjectReleaseTracker;
@@ -123,12 +124,11 @@ public class Http2SolrClient extends SolrClient {
   private static final List<String> errPath = Arrays.asList("metadata", "error-class");
   private final Map<String, String> headers;
   private final SolrHttpClientScheduler scheduler;
+  private final CloseTracker closeTracker;
 
   private volatile HttpClient httpClient;
   private volatile Set<String> queryParams = Collections.emptySet();
   private int idleTimeout;
-  volatile String closed = null;
-
   private volatile ResponseParser parser = new BinaryResponseParser();
   private volatile RequestWriter requestWriter = new BinaryRequestWriter();
   private final Set<HttpListenerFactory> listenerFactory = ConcurrentHashMap.newKeySet();
@@ -141,6 +141,7 @@ public class Http2SolrClient extends SolrClient {
   private volatile SolrQueuedThreadPool httpClientExecutor;
 
   protected Http2SolrClient(String serverBaseUrl, Builder builder) {
+    closeTracker = new CloseTracker();
     if (serverBaseUrl != null)  {
       if (!serverBaseUrl.equals("/") && serverBaseUrl.endsWith("/")) {
         serverBaseUrl = serverBaseUrl.substring(0, serverBaseUrl.length() - 1);
@@ -165,7 +166,6 @@ public class Http2SolrClient extends SolrClient {
     } else {
       httpClient = builder.http2SolrClient.httpClient;
     }
-    httpClient.setScheduler(scheduler);
     assert ObjectReleaseTracker.track(this);
   }
 
@@ -229,7 +229,6 @@ public class Http2SolrClient extends SolrClient {
     httpClientExecutor.setMinThreads(3);
     httpClient.setIdleTimeout(idleTimeout);
     try {
-     // httpClientExecutor.start();
       httpClient.setExecutor(httpClientExecutor);
       httpClient.setStrictEventOrdering(false);
       httpClient.setConnectBlocking(false);
@@ -238,7 +237,7 @@ public class Http2SolrClient extends SolrClient {
       httpClient.setUserAgentField(new HttpField(HttpHeader.USER_AGENT, AGENT));
       httpClient.setIdleTimeout(idleTimeout);
       if (builder.connectionTimeout != null) httpClient.setConnectTimeout(builder.connectionTimeout);
-
+      httpClient.setScheduler(scheduler);
       httpClient.start();
     } catch (Exception e) {
       ParWork.propegateInterrupt(e);
@@ -249,13 +248,7 @@ public class Http2SolrClient extends SolrClient {
   }
 
   public void close() {
-    if (this.closed != null) {
-      throw new AlreadyClosedException("Already closed! " + this.closed);
-    }
-    StringWriter sw = new StringWriter();
-    PrintWriter pw = new PrintWriter(sw);
-    new AlreadyClosedException("Already closed at: ").printStackTrace(pw);
-    this.closed = sw.toString();
+    closeTracker.close();
 
     if (httpClientExecutor != null) {
       try {
@@ -433,9 +426,6 @@ public class Http2SolrClient extends SolrClient {
     Request req = makeRequest(solrRequest, collection);
     final ResponseParser parser = solrRequest.getResponseParser() == null
         ? this.parser: solrRequest.getResponseParser();
-    if (this.closed != null) {
-      throw new AlreadyClosedException();
-    }
     if (onComplete != null) {
       // This async call only suitable for indexing since the response size is limited by 5MB
       req.onRequestQueued(asyncTracker.queuedListener).send(new BufferingResponseListener(5 * 1024 * 1024) {
@@ -895,9 +885,6 @@ public class Http2SolrClient extends SolrClient {
     }
 
     public synchronized void waitForComplete() {
-      if (Http2SolrClient.this.closed != null) {
-        throw new IllegalStateException("Already closed! " + Http2SolrClient.this.closed );
-      }
       if (log.isDebugEnabled()) log.debug("Before wait for outstanding requests registered: {} arrived: {}", phaser.getRegisteredParties(), phaser.getArrivedParties());
 
       int arrival = phaser.arriveAndAwaitAdvance();