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/10/05 17:21:07 UTC

[lucene-solr] 02/03: @942 Revert a few things.

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 5f6c6554f9e12a22c6cc53fcfbdb2de975a403b8
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Mon Oct 5 11:25:03 2020 -0500

    @942 Revert a few things.
---
 .../org/apache/solr/cloud/OverseerTaskProcessor.java | 20 ++++++++++++--------
 .../OverseerCollectionMessageHandler.java            |  2 +-
 .../solr/configsets/_default/conf/solrconfig.xml     |  2 +-
 .../org/apache/solr/common/PerThreadExecService.java |  2 +-
 4 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cloud/OverseerTaskProcessor.java b/solr/core/src/java/org/apache/solr/cloud/OverseerTaskProcessor.java
index 7a3ee82..4078432 100644
--- a/solr/core/src/java/org/apache/solr/cloud/OverseerTaskProcessor.java
+++ b/solr/core/src/java/org/apache/solr/cloud/OverseerTaskProcessor.java
@@ -251,13 +251,13 @@ public class OverseerTaskProcessor implements Runnable, Closeable {
             continue;
           }
           OverseerMessageHandler messageHandler = selector.selectOverseerMessageHandler(message);
-//          OverseerMessageHandler.Lock lock = messageHandler.lockTask(message, taskBatch);
-//          if (lock == null) {
-//            log.debug("Exclusivity check failed for [{}]", message.toString());
-//            // we may end crossing the size of the MAX_BLOCKED_TASKS. They are fine
-//            if (blockedTasks.size() < MAX_BLOCKED_TASKS) blockedTasks.put(head.getId(), head);
-//            continue;
-//          }
+          OverseerMessageHandler.Lock lock = messageHandler.lockTask(message, taskBatch);
+          if (lock == null) {
+            log.debug("Exclusivity check failed for [{}]", message.toString());
+            // we may end crossing the size of the MAX_BLOCKED_TASKS. They are fine
+            if (blockedTasks.size() < MAX_BLOCKED_TASKS) blockedTasks.put(head.getId(), head);
+            continue;
+          }
           try {
             markTaskAsRunning(head, asyncId);
             if (log.isDebugEnabled()) {
@@ -273,7 +273,7 @@ public class OverseerTaskProcessor implements Runnable, Closeable {
             throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, e);
           }
           if (log.isDebugEnabled()) log.debug(messageHandler.getName() + ": Get the message id:" + head.getId() + " message:" + message.toString());
-          Runner runner = new Runner(messageHandler, message, operation, head, null);
+          Runner runner = new Runner(messageHandler, message, operation, head, lock);
           taskFutures.put(runner, ParWork.getRootSharedExecutor().submit(runner));
         }
 
@@ -420,6 +420,7 @@ public class OverseerTaskProcessor implements Runnable, Closeable {
   protected class Runner implements Runnable {
     final ZkNodeProps message;
     final String operation;
+    private final OverseerMessageHandler.Lock lock;
     volatile OverseerSolrResponse response;
     final QueueEvent head;
     final OverseerMessageHandler messageHandler;
@@ -429,6 +430,7 @@ public class OverseerTaskProcessor implements Runnable, Closeable {
       this.operation = operation;
       this.head = head;
       this.messageHandler = messageHandler;
+      this.lock = lock;
     }
 
 
@@ -486,6 +488,8 @@ public class OverseerTaskProcessor implements Runnable, Closeable {
           return;
         }
         log.error("Exception running task", e);
+      } finally {
+        lock.unlock();
       }
 
       if (log.isDebugEnabled()) {
diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/OverseerCollectionMessageHandler.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/OverseerCollectionMessageHandler.java
index c34d0ae..b82af75 100644
--- a/solr/core/src/java/org/apache/solr/cloud/api/collections/OverseerCollectionMessageHandler.java
+++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/OverseerCollectionMessageHandler.java
@@ -906,7 +906,7 @@ public class OverseerCollectionMessageHandler implements OverseerMessageHandler,
   private LockTree.Session lockSession;
 
   @Override
-  public synchronized Lock lockTask(ZkNodeProps message, OverseerTaskProcessor.TaskBatch taskBatch) {
+  public Lock lockTask(ZkNodeProps message, OverseerTaskProcessor.TaskBatch taskBatch) {
     if (lockSession == null || sessionId != taskBatch.getId()) {
       //this is always called in the same thread.
       //Each batch is supposed to have a new taskBatch
diff --git a/solr/server/solr/configsets/_default/conf/solrconfig.xml b/solr/server/solr/configsets/_default/conf/solrconfig.xml
index 6ae79d7..e1855f8 100644
--- a/solr/server/solr/configsets/_default/conf/solrconfig.xml
+++ b/solr/server/solr/configsets/_default/conf/solrconfig.xml
@@ -284,7 +284,7 @@
     -->
     <updateLog>
       <str name="dir">${solr.ulog.dir:}</str>
-      <int name="numVersionBuckets">${solr.ulog.numVersionBuckets:32768}</int>
+      <int name="numVersionBuckets">${solr.ulog.numVersionBuckets:65536}</int>
     </updateLog>
 
     <!-- AutoCommit
diff --git a/solr/solrj/src/java/org/apache/solr/common/PerThreadExecService.java b/solr/solrj/src/java/org/apache/solr/common/PerThreadExecService.java
index b8dc010..4f67e31 100644
--- a/solr/solrj/src/java/org/apache/solr/common/PerThreadExecService.java
+++ b/solr/solrj/src/java/org/apache/solr/common/PerThreadExecService.java
@@ -25,7 +25,7 @@ public class PerThreadExecService extends AbstractExecutorService {
   private static final Logger log = LoggerFactory
       .getLogger(MethodHandles.lookup().lookupClass());
 
-  private static final int MAX_AVAILABLE = Math.max(ParWork.PROC_COUNT / 4, 2);
+  private static final int MAX_AVAILABLE = Math.max(ParWork.PROC_COUNT / 2, 3);
   private final Semaphore available = new Semaphore(MAX_AVAILABLE, false);
 
   private final ExecutorService service;