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 2021/02/01 23:52:46 UTC

[lucene-solr] 01/04: @1296 Make the reload lock fair again - think call can return too early.

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 949c62b36561ce60e5e945739b74334e85828fc0
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Sun Jan 31 16:29:23 2021 -0600

    @1296 Make the reload lock fair again - think call can return too early.
---
 solr/core/src/java/org/apache/solr/core/SolrCore.java        | 2 +-
 solr/core/src/java/org/apache/solr/update/SolrCoreState.java | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/core/SolrCore.java b/solr/core/src/java/org/apache/solr/core/SolrCore.java
index c4eb8d3..193cbb7 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -736,7 +736,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
         reloadyWaiting.incrementAndGet();
         log.info("Wait for reload lock");
 
-        while (!lock.tryLock(250, TimeUnit.MILLISECONDS)) {
+        while (!(lock.tryLock() || lock.tryLock(250, TimeUnit.MILLISECONDS))) {
           if (coreContainer.isShutDown() || isClosed() || closing) {
             log.warn("Skipping reload because we are closed");
             reloadyWaiting.decrementAndGet();
diff --git a/solr/core/src/java/org/apache/solr/update/SolrCoreState.java b/solr/core/src/java/org/apache/solr/update/SolrCoreState.java
index b0885ef..aa94268 100644
--- a/solr/core/src/java/org/apache/solr/update/SolrCoreState.java
+++ b/solr/core/src/java/org/apache/solr/update/SolrCoreState.java
@@ -44,7 +44,7 @@ public abstract class SolrCoreState {
   
   protected volatile boolean closed = false;
   private final Object updateLock = new Object();
-  private final ReentrantLock reloadLock = new ReentrantLock(false);
+  private final ReentrantLock reloadLock = new ReentrantLock(true);
   
   public Object getUpdateLock() {
     return updateLock;