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/10/29 21:25:23 UTC
svn commit: r1403480 - in /lucene/dev/trunk/solr: CHANGES.txt
core/src/java/org/apache/solr/cloud/OverseerCollectionProcessor.java
core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java
Author: markrmiller
Date: Mon Oct 29 20:25:22 2012
New Revision: 1403480
URL: http://svn.apache.org/viewvc?rev=1403480&view=rev
Log:
SOLR-4009: OverseerCollectionProcessor is not resiliant to many error conditions and can stop running on errors.
Modified:
lucene/dev/trunk/solr/CHANGES.txt
lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionProcessor.java
lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java
Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1403480&r1=1403479&r2=1403480&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Mon Oct 29 20:25:22 2012
@@ -132,6 +132,8 @@ Bug Fixes
* SOLR-4005: If CoreContainer fails to register a created core, it should close it.
(Mark Miller)
+* SOLR-4009: OverseerCollectionProcessor is not resiliant to many error conditions
+ and can stop running on errors. (milesli, Mark Miller)
Other Changes
----------------------
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionProcessor.java?rev=1403480&r1=1403479&r2=1403480&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionProcessor.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionProcessor.java Mon Oct 29 20:25:22 2012
@@ -80,7 +80,7 @@ public class OverseerCollectionProcessor
@Override
public void run() {
- log.info("Process current queue of collection creations");
+ log.info("Process current queue of collection messages");
while (amILeader() && !isClosed) {
try {
byte[] head = workQueue.peek(true);
@@ -88,13 +88,20 @@ public class OverseerCollectionProcessor
//if (head != null) { // should not happen since we block above
final ZkNodeProps message = ZkNodeProps.load(head);
final String operation = message.getStr(QUEUE_OPERATION);
-
+ try {
boolean success = processMessage(message, operation);
if (!success) {
// TODO: what to do on failure / partial failure
// if we fail, do we clean up then ?
- SolrException.log(log, "Collection creation of " + message.getStr("name") + " failed");
+ SolrException.log(log,
+ "Collection " + operation + " of " + message.getStr("name")
+ + " failed");
}
+ } catch(Throwable t) {
+ SolrException.log(log,
+ "Collection " + operation + " of " + message.getStr("name")
+ + " failed", t);
+ }
//}
workQueue.remove();
} catch (KeeperException e) {
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java?rev=1403480&r1=1403479&r2=1403480&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java Mon Oct 29 20:25:22 2012
@@ -714,6 +714,40 @@ public class BasicDistributedZkTest exte
//collectionNameList.remove(collectionName);
+ // remove an unknown collection
+ params = new ModifiableSolrParams();
+ params.set("action", CollectionAction.DELETE.toString());
+ params.set("name", "unknown_collection");
+ request = new QueryRequest(params);
+ request.setPath("/admin/collections");
+
+ createNewSolrServer("", baseUrl).request(request);
+
+ // create another collection should still work
+ params = new ModifiableSolrParams();
+ params.set("action", CollectionAction.CREATE.toString());
+
+ params.set("numShards", 1);
+ params.set(OverseerCollectionProcessor.REPLICATION_FACTOR, 1);
+ collectionName = "acollectionafterbaddelete";
+
+ params.set("name", collectionName);
+ request = new QueryRequest(params);
+ request.setPath("/admin/collections");
+ createNewSolrServer("", baseUrl).request(request);
+
+ checkForCollection(collectionName, 1);
+
+ url = getUrlFromZk(collectionName);
+
+ collectionClient = new HttpSolrServer(url);
+
+ // poll for a second - it can take a moment before we are ready to serve
+ waitForNon403or404or503(collectionClient);
+
+ for (int j = 0; j < cnt; j++) {
+ waitForRecoveriesToFinish(collectionName, zkStateReader, false);
+ }
}