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 2012/01/20 22:41:46 UTC

svn commit: r1234154 - in /lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr: cloud/RecoveryStrategy.java update/DefaultSolrCoreState.java

Author: markrmiller
Date: Fri Jan 20 21:41:45 2012
New Revision: 1234154

URL: http://svn.apache.org/viewvc?rev=1234154&view=rev
Log:
back to always waiting for cancled recovery, but move a cancel call out of sync block

Modified:
    lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
    lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java

Modified: lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java?rev=1234154&r1=1234153&r2=1234154&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java Fri Jan 20 21:41:45 2012
@@ -64,7 +64,6 @@ public class RecoveryStrategy extends Th
   public RecoveryStrategy(SolrCore core) {
     this.core = core;
     this.coreName = core.getName();
-    setDaemon(true);
     
     zkController = core.getCoreDescriptor().getCoreContainer().getZkController();
     zkStateReader = zkController.getZkStateReader();

Modified: lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java?rev=1234154&r1=1234153&r2=1234154&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java Fri Jan 20 21:41:45 2012
@@ -57,18 +57,23 @@ public final class DefaultSolrCoreState 
   }
 
   @Override
-  public synchronized void decref(IndexWriterCloser closer) throws IOException {
-    refCnt--;
-    if (refCnt == 0) {
-      if (closer != null) {
-        closer.closeWriter(indexWriter);
-      } else if (indexWriter != null) {
-        indexWriter.close();
+  public  void decref(IndexWriterCloser closer) throws IOException {
+    boolean cancelRecovery = false;
+    synchronized (this) {
+      refCnt--;
+      if (refCnt == 0) {
+        if (closer != null) {
+          closer.closeWriter(indexWriter);
+        } else if (indexWriter != null) {
+          indexWriter.close();
+        }
+        directoryFactory.close();
+        closed = true;
+        cancelRecovery = true;
       }
-      directoryFactory.close();
-      closed  = true;
-      cancelRecovery();
     }
+    // don't wait for this in the sync block
+    if (cancelRecovery) cancelRecovery();
   }
 
   @Override
@@ -122,11 +127,13 @@ public final class DefaultSolrCoreState 
     synchronized (recoveryLock) {
       if (recoveryStrat != null) {
         recoveryStrat.close();
+        
         try {
           recoveryStrat.join();
         } catch (InterruptedException e) {
           
         }
+        
         recoveryRunning = false;
         recoveryLock.notifyAll();
       }