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/26 00:11:48 UTC

[lucene-solr] branch reference_impl updated: @330 Add a nightly.

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 8f9c16d  @330 Add a nightly.
8f9c16d is described below

commit 8f9c16d0284fd65d671fc1a53fa91ef3d0338358
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Sat Jul 25 19:11:36 2020 -0500

    @330 Add a nightly.
---
 .../src/java/org/apache/solr/cloud/Overseer.java   |  9 ++++
 .../org/apache/solr/cloud/ConfigSetsAPITest.java   |  2 +-
 .../OutOfBoxZkACLAndCredentialsProvidersTest.java  |  5 +-
 .../autoscaling/sim/TestSimNodeLostTrigger.java    |  2 +
 .../solr/handler/component/TermsComponentTest.java |  2 +
 .../src/java/org/apache/solr/common/ParWork.java   | 11 ++++-
 .../org/apache/solr/common/ParWorkExecutor.java    |  9 ++--
 .../solr/common/util/SolrQueuedThreadPool.java     |  2 +-
 .../org/apache/solr/SolrIgnoredThreadsFilter.java  | 43 -----------------
 .../src/java/org/apache/solr/SolrTestCase.java     | 23 +++++----
 .../java/org/apache/solr/cloud/ZkTestServer.java   | 54 ++++++++++++----------
 11 files changed, 77 insertions(+), 85 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cloud/Overseer.java b/solr/core/src/java/org/apache/solr/cloud/Overseer.java
index 38a823b..ed66120 100644
--- a/solr/core/src/java/org/apache/solr/cloud/Overseer.java
+++ b/solr/core/src/java/org/apache/solr/cloud/Overseer.java
@@ -533,6 +533,15 @@ public class Overseer implements SolrCloseable {
     }
 
     @Override
+    public void run() {
+      try {
+        super.run();
+      } finally {
+        ParWork.closeExecutor();
+      }
+    }
+
+    @Override
     public void close() throws IOException {
       this.isClosed = true;
       thread.close();
diff --git a/solr/core/src/test/org/apache/solr/cloud/ConfigSetsAPITest.java b/solr/core/src/test/org/apache/solr/cloud/ConfigSetsAPITest.java
index 6655b25..ff1c715 100644
--- a/solr/core/src/test/org/apache/solr/cloud/ConfigSetsAPITest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/ConfigSetsAPITest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.cloud;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
 import org.apache.solr.client.solrj.request.CollectionAdminRequest;
 import org.apache.solr.client.solrj.request.ConfigSetAdminRequest;
 import org.apache.solr.common.SolrException;
@@ -27,7 +28,6 @@ import org.junit.BeforeClass;
 import org.junit.Ignore;
 import org.junit.Test;
 
-@Ignore
 public class ConfigSetsAPITest extends SolrCloudTestCase {
 
   @BeforeClass
diff --git a/solr/core/src/test/org/apache/solr/cloud/OutOfBoxZkACLAndCredentialsProvidersTest.java b/solr/core/src/test/org/apache/solr/cloud/OutOfBoxZkACLAndCredentialsProvidersTest.java
index 9e69f8b..886cce0 100644
--- a/solr/core/src/test/org/apache/solr/cloud/OutOfBoxZkACLAndCredentialsProvidersTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/OutOfBoxZkACLAndCredentialsProvidersTest.java
@@ -92,15 +92,14 @@ public class OutOfBoxZkACLAndCredentialsProvidersTest extends SolrTestCaseJ4 {
   @Override
   public void tearDown() throws Exception {
     zkServer.shutdown();
-    
     super.tearDown();
   }
 
   @Test
   public void testOutOfBoxSolrZkClient() throws Exception {
     SolrZkClient zkClient = new SolrZkClient(zkServer.getZkAddress(), AbstractZkTestCase.TIMEOUT);
-    zkClient.start();
     try {
+      zkClient.start();
       VMParamsZkACLAndCredentialsProvidersTest.doTest(zkClient,
           true, true, true, true, true,
           true, true, true, true, true);
@@ -112,8 +111,8 @@ public class OutOfBoxZkACLAndCredentialsProvidersTest extends SolrTestCaseJ4 {
   @Test
   public void testOpenACLUnsafeAllover() throws Exception {
     SolrZkClient zkClient = new SolrZkClient(zkServer.getZkHost(), AbstractZkTestCase.TIMEOUT);
-    zkClient.start();
     try {
+      zkClient.start();
       List<String> verifiedList = new ArrayList<String>();
       assertOpenACLUnsafeAllover(zkClient, "/", verifiedList);
       assertTrue(verifiedList.contains("/solr"));
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimNodeLostTrigger.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimNodeLostTrigger.java
index 8eb6156..abba3a3 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimNodeLostTrigger.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimNodeLostTrigger.java
@@ -39,11 +39,13 @@ import org.apache.solr.common.util.TimeSource;
 import org.apache.solr.core.SolrResourceLoader;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 
 /**
  * Test for {@link NodeLostTrigger}
  */
+@Ignore // auto scaling removed in master anyway
 public class TestSimNodeLostTrigger extends SimSolrCloudTestCase {
   private static AtomicBoolean actionConstructorCalled = new AtomicBoolean(false);
   private static AtomicBoolean actionInitCalled = new AtomicBoolean(false);
diff --git a/solr/core/src/test/org/apache/solr/handler/component/TermsComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/TermsComponentTest.java
index 7103659..96e040c 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/TermsComponentTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/TermsComponentTest.java
@@ -20,6 +20,7 @@ import java.io.IOException;
 import java.util.Arrays;
 import java.util.regex.Pattern;
 
+import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.mutable.MutableValueDouble;
 import org.apache.lucene.util.mutable.MutableValueFloat;
 import org.apache.lucene.util.mutable.MutableValueInt;
@@ -35,6 +36,7 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 
 
+@LuceneTestCase.Nightly // slow test
 public class TermsComponentTest extends SolrTestCaseJ4 {
 
   @BeforeClass
diff --git a/solr/solrj/src/java/org/apache/solr/common/ParWork.java b/solr/solrj/src/java/org/apache/solr/common/ParWork.java
index 31c0674..04739a4 100644
--- a/solr/solrj/src/java/org/apache/solr/common/ParWork.java
+++ b/solr/solrj/src/java/org/apache/solr/common/ParWork.java
@@ -72,7 +72,16 @@ public class ParWork implements Closeable {
 
   private static SysStats sysStats = SysStats.getSysStats();
 
-  private static class WorkUnit {
+    public static void closeExecutor() {
+      ExecutorService exec = THREAD_LOCAL_EXECUTOR.get();
+      if (exec != null) {
+        exec.shutdownNow();
+        ParWork.close(exec);
+        THREAD_LOCAL_EXECUTOR.set(null);
+      }
+    }
+
+    private static class WorkUnit {
     private final List<Object> objects;
     private final TimeTracker tracker;
     private final String label;
diff --git a/solr/solrj/src/java/org/apache/solr/common/ParWorkExecutor.java b/solr/solrj/src/java/org/apache/solr/common/ParWorkExecutor.java
index 42000ae..23d4215 100644
--- a/solr/solrj/src/java/org/apache/solr/common/ParWorkExecutor.java
+++ b/solr/solrj/src/java/org/apache/solr/common/ParWorkExecutor.java
@@ -27,7 +27,7 @@ public class ParWorkExecutor extends ThreadPoolExecutor {
     private static AtomicInteger threadNumber = new AtomicInteger(0);
 
     public ParWorkExecutor(String name, int maxPoolsSize) {
-        super(0,  maxPoolsSize,  KEEP_ALIVE_TIME, TimeUnit.SECONDS, new ArrayBlockingQueue<>(Integer.getInteger("solr.threadExecQueueSize", 30)), new ThreadFactory() {
+        super(0,  maxPoolsSize,  KEEP_ALIVE_TIME, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(Integer.getInteger("solr.threadExecQueueSize", 30)), new ThreadFactory() {
 
             ThreadGroup group;
 
@@ -40,8 +40,11 @@ public class ParWorkExecutor extends ThreadPoolExecutor {
             public Thread newThread(Runnable r) {
                 Thread t = new Thread(group, r, name + threadNumber.getAndIncrement(), 0) {
                     public void run() {
-                        super.run();
-                        ParWork.close(ParWork.getExecutor());
+                        try {
+                            super.run();
+                        } finally {
+                            ParWork.closeExecutor();
+                        }
                     }
                 };
                 t.setDaemon(true);
diff --git a/solr/solrj/src/java/org/apache/solr/common/util/SolrQueuedThreadPool.java b/solr/solrj/src/java/org/apache/solr/common/util/SolrQueuedThreadPool.java
index c2de6e3..456be8d 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/SolrQueuedThreadPool.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/SolrQueuedThreadPool.java
@@ -705,7 +705,7 @@ public class SolrQueuedThreadPool extends ContainerLifeCycle implements ThreadFa
 
     protected void removeThread(Thread thread)
     {
-       ParWork.close(ParWork.getExecutor());
+       ParWork.closeExecutor();
         _threads.remove(thread);
     }
 
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 da5dc49..5016796 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrIgnoredThreadsFilter.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrIgnoredThreadsFilter.java
@@ -47,58 +47,15 @@ public class SolrIgnoredThreadsFilter implements ThreadFilter {
       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("SessionTracker")) { // zk thread that will stop in a moment.
       return true;
     }
 
-    if (threadName.startsWith("CPUMonitoringThread")) { // zk thread that will stop in a moment.
-      return true;
-    }
-
-    if (threadName.startsWith("ParWork")) {
-      return true;
-    }
-    if (threadName.startsWith("solr-test-qtp")) {
-      return true;
-    }
-
-    // nocommit tmp hack
-    if (threadName.startsWith("ScheduledTrigger")) {
-      return true;
-    }
-    if (threadName.startsWith("NIOWorkerThread") || threadName.startsWith("EventThread")) {
-      return true;
-    }
-
-    if (threadName.startsWith("ConnnectionExpirer")) {
-      return true;
-    }
-    
-    if (threadName.startsWith("SolrCoreLoader") || threadName.startsWith("searcherExecutor") ) {
-      return true;
-    }
-
-    // nocommit - look into this - these client threads on the qtp can stick around, but are TERMINATED state
-    if (threadName.startsWith("httpClient-")) {
-      return true;
-    }
-
-
-
     return false;
   }
 }
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 85e78bc..8fcf892 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java
@@ -371,8 +371,10 @@ public class SolrTestCase extends LuceneTestCase {
     log.info("@After Class ------------------------------------------------------");
     try {
 
+      ParWork.closeExecutor();
+
       if (null != testExecutor) {
-        testExecutor.shutdown();
+        testExecutor.shutdownNow();
       }
 
 
@@ -522,14 +524,19 @@ public class SolrTestCase extends LuceneTestCase {
   }
 
   private static void interrupt(Thread thread, String nameContains) {
-    if (nameContains != null && thread.getName().contains(nameContains)) {
-      System.out.println("simulate interrupt on " + thread.getName());
+    if (nameContains != null && thread.getName().contains(nameContains) && nameContains.startsWith("ParWork")) {
+
+ //     System.out.println("simulate interrupt on " + thread.getName());
 //      thread.interrupt();
-//      try {
-//        thread.join(5000);
-//      } catch (InterruptedException e) {
-//        ParWork.propegateInterrupt(e);
-//      }
+      try {
+        thread.join(5000);
+      } catch (InterruptedException e) {
+        ParWork.propegateInterrupt(e);
+      }
+    }
+
+    if (nameContains != null && nameContains.startsWith("ParWork")) {
+      ParWork.closeExecutor();
     }
   }
 
diff --git a/solr/test-framework/src/java/org/apache/solr/cloud/ZkTestServer.java b/solr/test-framework/src/java/org/apache/solr/cloud/ZkTestServer.java
index e300204..2393c58 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/ZkTestServer.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/ZkTestServer.java
@@ -567,35 +567,39 @@ public class ZkTestServer implements Closeable {
 
         @Override
         public void run() {
-          ServerConfig config = new ServerConfig() {
-
-            {
-              setClientPort(ZkTestServer.this.clientPort);
-              this.dataDir = zkDir.toFile();
-              this.dataLogDir = zkDir.toFile();
-              this.tickTime = theTickTime;
-              this.maxSessionTimeout = ZkTestServer.this.maxSessionTimeout;
-              this.minSessionTimeout = ZkTestServer.this.minSessionTimeout;
-            }
+          try {
+            ServerConfig config = new ServerConfig() {
+
+              {
+                setClientPort(ZkTestServer.this.clientPort);
+                this.dataDir = zkDir.toFile();
+                this.dataLogDir = zkDir.toFile();
+                this.tickTime = theTickTime;
+                this.maxSessionTimeout = ZkTestServer.this.maxSessionTimeout;
+                this.minSessionTimeout = ZkTestServer.this.minSessionTimeout;
+              }
 
-            public void setClientPort(int clientPort) {
-              if (clientPortAddress != null) {
-                try {
-                  this.clientPortAddress = new InetSocketAddress(
-                          InetAddress.getByName(clientPortAddress.getHostName()), clientPort);
-                } catch (UnknownHostException e) {
-                  throw new RuntimeException(e);
+              public void setClientPort(int clientPort) {
+                if (clientPortAddress != null) {
+                  try {
+                    this.clientPortAddress = new InetSocketAddress(
+                            InetAddress.getByName(clientPortAddress.getHostName()), clientPort);
+                  } catch (UnknownHostException e) {
+                    throw new RuntimeException(e);
+                  }
+                } else {
+                  this.clientPortAddress = new InetSocketAddress(clientPort);
                 }
-              } else {
-                this.clientPortAddress = new InetSocketAddress(clientPort);
-              }
 
+              }
+            };
+            try {
+              zkServer.runFromConfig(config);
+            } catch (Throwable t) {
+              log.error("zkServer error", t);
             }
-          };
-          try {
-            zkServer.runFromConfig(config);
-          } catch (Throwable t) {
-            log.error("zkServer error", t);
+          } finally {
+            ParWork.closeExecutor();
           }
         }
       };