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/21 00:41:33 UTC
svn commit: r1234206 - in /lucene/dev/branches/solrcloud/solr:
core/src/java/org/apache/solr/cloud/SyncStrategy.java
core/src/java/org/apache/solr/update/PeerSync.java
solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
Author: markrmiller
Date: Fri Jan 20 23:41:32 2012
New Revision: 1234206
URL: http://svn.apache.org/viewvc?rev=1234206&view=rev
Log:
fix how leader was asking replicas to sync back itself
dont fail sync if replicas could not be reached due to connection issues
Modified:
lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/SyncStrategy.java
lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/PeerSync.java
lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
Modified: lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/SyncStrategy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/SyncStrategy.java?rev=1234206&r1=1234205&r2=1234206&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/SyncStrategy.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/SyncStrategy.java Fri Jan 20 23:41:32 2012
@@ -20,23 +20,21 @@ package org.apache.solr.cloud;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
-import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.client.solrj.request.CoreAdminRequest.RequestRecovery;
+import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.common.cloud.CloudState;
import org.apache.solr.common.cloud.Slice;
import org.apache.solr.common.cloud.ZkCoreNodeProps;
import org.apache.solr.common.cloud.ZkNodeProps;
import org.apache.solr.common.cloud.ZkStateReader;
-import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.params.CoreAdminParams.CoreAdminAction;
+import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.util.NamedList;
-import org.apache.solr.common.util.StrUtils;
import org.apache.solr.core.SolrCore;
import org.apache.solr.update.PeerSync;
import org.slf4j.Logger;
@@ -101,7 +99,7 @@ public class SyncStrategy {
for (ZkCoreNodeProps node : nodes) {
try {
syncToMe(zkController, collection, shardId, leaderProps,
- node.getNodeProps());
+ node.getNodeProps(), nodes);
} catch (Exception exception) {
exception.printStackTrace();
// nocommit
@@ -186,12 +184,8 @@ public class SyncStrategy {
}
private void syncToMe(ZkController zkController, String collection,
- String shardId, ZkNodeProps leaderProps, ZkNodeProps props)
+ String shardId, ZkNodeProps leaderProps, ZkNodeProps props, List<ZkCoreNodeProps> nodes)
throws MalformedURLException, SolrServerException, IOException {
- List<ZkCoreNodeProps> nodes = zkController.getZkStateReader()
- .getReplicaProps(collection, shardId,
- props.get(ZkStateReader.NODE_NAME_PROP),
- props.get(ZkStateReader.CORE_NAME_PROP));
if (nodes == null) {
System.out.println("I have no replicas");
@@ -210,7 +204,7 @@ public class SyncStrategy {
CommonsHttpSolrServer server = new CommonsHttpSolrServer(node.getCoreUrl());
NamedList rsp = server.request(qr);
- System.out.println("response about syncing to leader:" + rsp);
+ System.out.println("response about syncing to leader:" + rsp + " node:" + node.getCoreUrl() + " me:" + zkController.getBaseUrl());
boolean success = (Boolean) rsp.get("sync");
System.out.println("success:" + success);
if (!success) {
Modified: lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/PeerSync.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/PeerSync.java?rev=1234206&r1=1234205&r2=1234206&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/PeerSync.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/PeerSync.java Fri Jan 20 23:41:32 2012
@@ -17,14 +17,23 @@
package org.apache.solr.update;
+import java.io.IOException;
+import java.net.ConnectException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.commons.httpclient.NoHttpResponseException;
import org.apache.lucene.util.BytesRef;
-import org.apache.solr.client.solrj.SolrRequest;
+import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.StrUtils;
-import org.apache.solr.core.PluginInfo;
import org.apache.solr.core.SolrCore;
import org.apache.solr.handler.component.ShardHandler;
import org.apache.solr.handler.component.ShardHandlerFactory;
@@ -37,16 +46,9 @@ import org.apache.solr.update.processor.
import org.apache.solr.update.processor.DistributedUpdateProcessorFactory;
import org.apache.solr.update.processor.RunUpdateProcessorFactory;
import org.apache.solr.update.processor.UpdateRequestProcessor;
-import org.apache.solr.util.plugin.PluginInfoInitialized;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.File;
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.util.*;
-import java.util.concurrent.*;
-
/** @lucene.experimental */
public class PeerSync {
public static Logger log = LoggerFactory.getLogger(PeerSync.class);
@@ -163,8 +165,19 @@ public class PeerSync {
private boolean handleResponse(ShardResponse srsp) {
if (srsp.getException() != null) {
+
+ // nocommit
+ if (srsp.getException() instanceof SolrServerException) {
+ Throwable solrException = ((SolrServerException) srsp.getException())
+ .getRootCause();
+ if (solrException instanceof ConnectException
+ || solrException instanceof NoHttpResponseException) {
+ return true;
+ }
+ }
// TODO: at least log???
- // srsp.getException().printStackTrace(System.out);
+ srsp.getException().printStackTrace(System.out);
+
return false;
}
Modified: lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java?rev=1234206&r1=1234205&r2=1234206&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java (original)
+++ lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java Fri Jan 20 23:41:32 2012
@@ -439,11 +439,11 @@ public class ZkStateReader {
Map<String,ZkNodeProps> shardMap = replicas.getShards();
List<ZkCoreNodeProps> nodes = new ArrayList<ZkCoreNodeProps>(shardMap.size());
-
+ String filterNodeName = thisNodeName + "_" + coreName;
for (Entry<String,ZkNodeProps> entry : shardMap.entrySet()) {
ZkCoreNodeProps nodeProps = new ZkCoreNodeProps(entry.getValue());
String coreNodeName = nodeProps.getNodeName() + "_" + coreName;
- if (cloudState.liveNodesContain(thisNodeName) && !coreNodeName.equals(thisNodeName + "_" + coreName)) {
+ if (cloudState.liveNodesContain(nodeProps.getNodeName()) && !coreNodeName.equals(filterNodeName)) {
if (stateFilter == null || stateFilter.equals(nodeProps.getState())) {
nodes.add(nodeProps);
}