lucene-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From thelabd...@apache.org
Subject svn commit: r1682019 - in /lucene/dev/branches/lucene_solr_5_2: ./ solr/ solr/CHANGES.txt solr/core/ solr/core/src/java/org/apache/solr/core/SolrCore.java
Date Wed, 27 May 2015 13:33:28 GMT
Author: thelabdude
Date: Wed May 27 13:33:28 2015
New Revision: 1682019

URL: http://svn.apache.org/r1682019
Log:
SOLR-7587: Move the call to seed version buckets to before buffering updates during core construction

Modified:
    lucene/dev/branches/lucene_solr_5_2/   (props changed)
    lucene/dev/branches/lucene_solr_5_2/solr/   (props changed)
    lucene/dev/branches/lucene_solr_5_2/solr/CHANGES.txt   (contents, props changed)
    lucene/dev/branches/lucene_solr_5_2/solr/core/   (props changed)
    lucene/dev/branches/lucene_solr_5_2/solr/core/src/java/org/apache/solr/core/SolrCore.java

Modified: lucene/dev/branches/lucene_solr_5_2/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_2/solr/CHANGES.txt?rev=1682019&r1=1682018&r2=1682019&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_2/solr/CHANGES.txt (original)
+++ lucene/dev/branches/lucene_solr_5_2/solr/CHANGES.txt Wed May 27 13:33:28 2015
@@ -266,6 +266,11 @@ Bug Fixes
 * SOLR-7585: Fix NoSuchElementException in LFUCache resulting from heavy writes
   making concurrent put() calls. (Maciej Zasada via Shawn Heisey)
 
+* SOLR-7587: Seeding bucket versions from index when the firstSearcher event fires has a
race condition
+  that leads to an infinite wait on VersionInfo's ReentrantReadWriteLock because the read-lock
acquired
+  during a commit cannot be upgraded to a write-lock needed to block updates; solution is
to move the
+  call out of the firstSearcher event path and into the SolrCore constructor. (Timothy Potter)
+
 Optimizations
 ----------------------
 

Modified: lucene/dev/branches/lucene_solr_5_2/solr/core/src/java/org/apache/solr/core/SolrCore.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_2/solr/core/src/java/org/apache/solr/core/SolrCore.java?rev=1682019&r1=1682018&r2=1682019&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_2/solr/core/src/java/org/apache/solr/core/SolrCore.java
(original)
+++ lucene/dev/branches/lucene_solr_5_2/solr/core/src/java/org/apache/solr/core/SolrCore.java
Wed May 27 13:33:28 2015
@@ -841,6 +841,9 @@ public final class SolrCore implements S
       }
     }
 
+    // seed version buckets with max from index during core initialization ... requires a
searcher!
+    seedVersionBucketsWithMaxFromIndex();
+
     bufferUpdatesIfConstructing(coreDescriptor);
     
     // For debugging   
@@ -849,16 +852,20 @@ public final class SolrCore implements S
 
     this.ruleExpiryLock = new ReentrantLock();
     registerConfListener();
+  }
 
-    // seed version buckets with max from index during core initialization
-    if (this.updateHandler != null && this.updateHandler.getUpdateLog() != null)
{
+  private void seedVersionBucketsWithMaxFromIndex() {
+    UpdateHandler uh = getUpdateHandler();
+    if (uh != null && uh.getUpdateLog() != null) {
       RefCounted<SolrIndexSearcher> newestSearcher = getRealtimeSearcher();
       if (newestSearcher != null) {
         try {
-          this.updateHandler.getUpdateLog().onFirstSearcher(newestSearcher.get());
+          uh.getUpdateLog().onFirstSearcher(newestSearcher.get());
         } finally {
           newestSearcher.decref();
         }
+      } else {
+        log.warn("No searcher available! Cannot seed version buckets with max from index.");
       }
     }
   }



Mime
View raw message