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/08/11 05:05:35 UTC

[lucene-solr] branch reference_impl_dev updated: @496 A bit more exec/qtp cleanup / improve.

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


The following commit(s) were added to refs/heads/reference_impl_dev by this push:
     new 36be086  @496 A bit more exec/qtp cleanup / improve.
36be086 is described below

commit 36be086925fad95185d4a3f3d5e466ba46b88af2
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Tue Aug 11 00:05:04 2020 -0500

    @496 A bit more exec/qtp cleanup / improve.
---
 .../client/solrj/embedded/JettySolrRunner.java     |   2 +-
 .../org/apache/solr/update/UpdateShardHandler.java |   7 +-
 .../CollectionsAPIDistributedZkTest.java           |   2 -
 .../solr/client/solrj/impl/Http2SolrClient.java    |   1 +
 .../org/apache/solr/common/ParWorkExecService.java | 106 ++++++++++++---------
 5 files changed, 66 insertions(+), 52 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java b/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
index ad89877..94f6c80 100644
--- a/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
+++ b/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
@@ -751,7 +751,7 @@ public class JettySolrRunner implements Closeable {
             if (config.qtp == null) {
               qtp.waitForStopping();
             }
-          } catch (InterruptedException e) {
+          } catch (Exception e) {
             ParWork.propegateInterrupt(e);
           }
         });
diff --git a/solr/core/src/java/org/apache/solr/update/UpdateShardHandler.java b/solr/core/src/java/org/apache/solr/update/UpdateShardHandler.java
index faa130a..e354a46 100644
--- a/solr/core/src/java/org/apache/solr/update/UpdateShardHandler.java
+++ b/solr/core/src/java/org/apache/solr/update/UpdateShardHandler.java
@@ -213,18 +213,21 @@ public class UpdateShardHandler implements SolrInfoBean {
     }
     if (updateOnlyClient != null) updateOnlyClient.disableCloseLock();
     try (ParWork closer = new ParWork(this, true)) {
+      closer.collect(recoveryExecutor);
       closer.collect(() -> {
         HttpClientUtil.close(defaultClient);
         return defaultClient;
       });
-      closer.collect(recoveryExecutor);
+      closer.addCollect("recoveryExecutor");
+
+
       closer.collect(updateOnlyClient);
       closer.collect(defaultConnectionManager);
       closer.collect(() -> {
         SolrInfoBean.super.close();
         return this;
       });
-      closer.addCollect("updateshardhandler");
+      closer.addCollect("updateshardhandlerClients");
     }
     ObjectReleaseTracker.release(this);
   }
diff --git a/solr/core/src/test/org/apache/solr/cloud/api/collections/CollectionsAPIDistributedZkTest.java b/solr/core/src/test/org/apache/solr/cloud/api/collections/CollectionsAPIDistributedZkTest.java
index 2daa136..538e80e 100644
--- a/solr/core/src/test/org/apache/solr/cloud/api/collections/CollectionsAPIDistributedZkTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/api/collections/CollectionsAPIDistributedZkTest.java
@@ -65,8 +65,6 @@ public class CollectionsAPIDistributedZkTest extends SolrCloudTestCase {
     if (TEST_NIGHTLY) {
       System.setProperty("createCollectionWaitTimeTillActive", "10");
       TestInjection.randomDelayInCoreCreation = "true:5";
-    } else {
-      System.setProperty("createCollectionWaitTimeTillActive", "10");
     }
 
     configureCluster(TEST_NIGHTLY ? 4 : 2)
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 cc61151..02044e5 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
@@ -260,6 +260,7 @@ public class Http2SolrClient extends SolrClient {
           }
         });
       }
+      closer.collect(httpClientExecutor);
       closer.collect(() -> {
 
         try {
diff --git a/solr/solrj/src/java/org/apache/solr/common/ParWorkExecService.java b/solr/solrj/src/java/org/apache/solr/common/ParWorkExecService.java
index d4c7a8f..7b51cb0 100644
--- a/solr/solrj/src/java/org/apache/solr/common/ParWorkExecService.java
+++ b/solr/solrj/src/java/org/apache/solr/common/ParWorkExecService.java
@@ -99,7 +99,11 @@ public class ParWorkExecService implements ExecutorService {
           return CompletableFuture.completedFuture(callable.call());
         }
       } else {
-        available.acquireUninterruptibly();
+        try {
+          available.acquire();
+        } catch (InterruptedException e) {
+          available.acquire();
+        }
       }
       Future<T> future = service.submit(callable);
       return new Future<T>() {
@@ -177,62 +181,70 @@ public class ParWorkExecService implements ExecutorService {
   }
 
   public Future<?> doSubmit(Runnable runnable, boolean requiresAnotherThread) {
-    if (!requiresAnotherThread) {
-      boolean success = checkLoad();
-      if (success) {
-        success = available.tryAcquire();
-      }
-      if (!success) {
-        runnable.run();
-        return CompletableFuture.completedFuture(null);
-      }
-    } else {
-      available.acquireUninterruptibly();
-    }
-    Future<?> future = service.submit(runnable);
-
-    return new Future<>() {
-      @Override
-      public boolean cancel(boolean b) {
-        return future.cancel(b);
+    try {
+      if (!requiresAnotherThread) {
+        boolean success = checkLoad();
+        if (success) {
+          success = available.tryAcquire();
+        }
+        if (!success) {
+          runnable.run();
+          return CompletableFuture.completedFuture(null);
+        }
+      } else {
+        try {
+          available.acquire();
+        } catch (InterruptedException e) {
+          available.acquire();
+        }
       }
+      Future<?> future = service.submit(runnable);
 
-      @Override
-      public boolean isCancelled() {
-        return future.isCancelled();
-      }
+      return new Future<>() {
+        @Override
+        public boolean cancel(boolean b) {
+          return future.cancel(b);
+        }
 
-      @Override
-      public boolean isDone() {
-        return future.isDone();
-      }
+        @Override
+        public boolean isCancelled() {
+          return future.isCancelled();
+        }
 
-      @Override
-      public Object get() throws InterruptedException, ExecutionException {
-        Object ret;
-        try {
-          ret = future.get();
-        } finally {
-          available.release();
+        @Override
+        public boolean isDone() {
+          return future.isDone();
         }
 
-        return ret;
-      }
+        @Override
+        public Object get() throws InterruptedException, ExecutionException {
+          Object ret;
+          try {
+            ret = future.get();
+          } finally {
+            available.release();
+          }
 
-      @Override
-      public Object get(long l, TimeUnit timeUnit)
-          throws InterruptedException, ExecutionException, TimeoutException {
-        Object ret;
-        try {
-          ret = future.get();
-        } finally {
-          available.release();
+          return ret;
         }
-        return ret;
-      }
 
-    };
+        @Override
+        public Object get(long l, TimeUnit timeUnit)
+            throws InterruptedException, ExecutionException, TimeoutException {
+          Object ret;
+          try {
+            ret = future.get();
+          } finally {
+            available.release();
+          }
+          return ret;
+        }
 
+      };
+    } catch (Exception e) {
+      ParWork.propegateInterrupt(e);
+      throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, e);
+    }
   }
 
   @Override