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/11/29 15:57:23 UTC

svn commit: r1415191 - in /lucene/dev/branches/branch_4x/solr: core/src/java/org/apache/solr/cloud/ core/src/java/org/apache/solr/core/ solrj/src/java/org/apache/solr/common/cloud/

Author: markrmiller
Date: Thu Nov 29 14:57:22 2012
New Revision: 1415191

URL: http://svn.apache.org/viewvc?rev=1415191&view=rev
Log:
SOLR-4125: There are a few small changes in 5x that should be in 4x but are not.

Modified:
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ZkController.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/SolrCore.java
    lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
    lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java?rev=1415191&r1=1415190&r2=1415191&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java Thu Nov 29 14:57:22 2012
@@ -239,10 +239,17 @@ final class ShardLeaderElectionContext e
     } catch (Throwable t) {
       try {
         core = cc.getCore(coreName);
+        if (core == null) {
+          cancelElection();
+          throw new SolrException(ErrorCode.SERVER_ERROR,
+              "Fatal Error, SolrCore not found:" + coreName + " in "
+                  + cc.getCoreNames());
+        }
+        
         core.getCoreDescriptor().getCloudDescriptor().isLeader = false;
         
         // we could not publish ourselves as leader - rejoin election
-        rejoinLeaderElection(coreName, core);
+        rejoinLeaderElection(leaderSeqPath, core);
       } finally {
         if (core != null) {
           core.close();
@@ -348,12 +355,15 @@ final class ShardLeaderElectionContext e
       return false;
     }
     
-    if (core.getCoreDescriptor().getCloudDescriptor().getLastPublished().equals(ZkStateReader.ACTIVE)) {
+    if (core.getCoreDescriptor().getCloudDescriptor().getLastPublished()
+        .equals(ZkStateReader.ACTIVE)) {
       log.info("My last published State was Active, it's okay to be the leader.");
       return true;
     }
-    
-//    TODO: and if no is a good candidate?
+    log.info("My last published State was "
+        + core.getCoreDescriptor().getCloudDescriptor().getLastPublished()
+        + ", I won't be the leader.");
+    // TODO: and if no one is a good candidate?
     
     return false;
   }

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ZkController.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ZkController.java?rev=1415191&r1=1415190&r2=1415191&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ZkController.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ZkController.java Thu Nov 29 14:57:22 2012
@@ -195,8 +195,6 @@ public final class ZkController {
               ElectionContext context = new OverseerElectionContext(zkClient, overseer, getNodeName());
               overseerElector.joinElection(context, true);
               zkStateReader.createClusterStateWatchersAndUpdate();
-
-            //  cc.newCmdDistribExecutor();
               
               // we have to register as live first to pick up docs in the buffer
               createEphemeralLiveNode();
@@ -310,7 +308,11 @@ public final class ZkController {
     }
     
     for (ElectionContext context : electionContexts.values()) {
-      context.close();
+      try {
+        context.close();
+      } catch (Throwable t) {
+        log.error("Error closing overseer", t);
+      }
     }
     
     try {

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/SolrCore.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/SolrCore.java?rev=1415191&r1=1415190&r2=1415191&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/SolrCore.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/SolrCore.java Thu Nov 29 14:57:22 2012
@@ -911,11 +911,14 @@ public final class SolrCore implements S
       SolrException.log(log,e);
     }
     
-    
-    if (updateHandler instanceof IndexWriterCloser) {
-      decrefSolrCoreState((IndexWriterCloser)updateHandler);
-    } else {
-      decrefSolrCoreState(null);
+    try {
+      if (updateHandler instanceof IndexWriterCloser) {
+        decrefSolrCoreState((IndexWriterCloser) updateHandler);
+      } else {
+        decrefSolrCoreState(null);
+      }
+    } catch (Throwable e) {
+      SolrException.log(log, e);
     }
     
     try {

Modified: lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java?rev=1415191&r1=1415190&r2=1415191&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java (original)
+++ lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java Thu Nov 29 14:57:22 2012
@@ -70,6 +70,7 @@ public class ClusterState implements JSO
    */
   public ClusterState(Integer zkClusterStateVersion, Set<String> liveNodes,
       Map<String, Map<String,Slice>> collectionStates) {
+    this.zkClusterStateVersion = zkClusterStateVersion;
     this.liveNodes = new HashSet<String>(liveNodes.size());
     this.liveNodes.addAll(liveNodes);
     this.collectionStates = new HashMap<String, Map<String,Slice>>(collectionStates.size());

Modified: lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java?rev=1415191&r1=1415190&r2=1415191&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java (original)
+++ lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java Thu Nov 29 14:57:22 2012
@@ -197,9 +197,13 @@ public class ZkStateReader {
               Stat stat = new Stat();
               byte[] data = zkClient.getData(CLUSTER_STATE, thisWatch, stat ,
                   true);
-              
-              ClusterState clusterState = ClusterState.load(stat.getVersion(), data,
-                  ZkStateReader.this.clusterState.getLiveNodes());
+              List<String> liveNodes = zkClient.getChildren(
+                  LIVE_NODES_ZKNODE, this, true);
+     
+              Set<String> liveNodesSet = new HashSet<String>();
+              liveNodesSet.addAll(liveNodes);
+              Set<String> ln = ZkStateReader.this.clusterState.getLiveNodes();
+              ClusterState clusterState = ClusterState.load(stat.getVersion(), data, ln);
               // update volatile
               ZkStateReader.this.clusterState = clusterState;
             }
@@ -301,9 +305,9 @@ public class ZkStateReader {
               ZkStateReader.this.clusterState.getZkClusterStateVersion(), liveNodesSet,
               ZkStateReader.this.clusterState.getCollectionStates());
         }
+        this.clusterState = clusterState;
       }
 
-      this.clusterState = clusterState;
     } else {
       if (clusterStateUpdateScheduled) {
         log.info("Cloud state update for ZooKeeper already scheduled");
@@ -330,7 +334,7 @@ public class ZkStateReader {
                 clusterState = ClusterState.load(zkClient, liveNodesSet);
               } else {
                 log.info("Updating live nodes from ZooKeeper... ");
-                clusterState = new ClusterState(ZkStateReader.this.clusterState .getZkClusterStateVersion(), liveNodesSet, ZkStateReader.this.clusterState.getCollectionStates());
+                clusterState = new ClusterState(ZkStateReader.this.clusterState.getZkClusterStateVersion(), liveNodesSet, ZkStateReader.this.clusterState.getCollectionStates());
               }
               
               ZkStateReader.this.clusterState = clusterState;