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/07/24 00:44:21 UTC

svn commit: r1364828 - in /lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud: FullSolrCloudTest.java SyncSliceTest.java

Author: markrmiller
Date: Mon Jul 23 22:44:20 2012
New Revision: 1364828

URL: http://svn.apache.org/viewvc?rev=1364828&view=rev
Log:
avoid distrib search against down node in test

Modified:
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudTest.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/SyncSliceTest.java

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudTest.java?rev=1364828&r1=1364827&r2=1364828&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudTest.java Mon Jul 23 22:44:20 2012
@@ -106,7 +106,7 @@ public class FullSolrCloudTest extends A
   protected ChaosMonkey chaosMonkey;
   protected volatile ZkStateReader zkStateReader;
   
-  private Map<String,SolrServer> shardToLeaderClient = new HashMap<String,SolrServer>();
+  protected Map<String,SolrServer> shardToLeaderClient = new HashMap<String,SolrServer>();
   protected Map<String,CloudJettyRunner> shardToLeaderJetty = new HashMap<String,CloudJettyRunner>();
   
   class CloudJettyRunner {

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/SyncSliceTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/SyncSliceTest.java?rev=1364828&r1=1364827&r2=1364828&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/SyncSliceTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/SyncSliceTest.java Mon Jul 23 22:44:20 2012
@@ -19,19 +19,24 @@ package org.apache.solr.cloud;
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
 import org.apache.lucene.util.LuceneTestCase.Slow;
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.client.solrj.SolrRequest;
+import org.apache.solr.client.solrj.SolrServer;
 import org.apache.solr.client.solrj.SolrServerException;
+import org.apache.solr.client.solrj.embedded.JettySolrRunner;
 import org.apache.solr.client.solrj.impl.HttpSolrServer;
 import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.client.solrj.request.UpdateRequest;
 import org.apache.solr.common.SolrInputDocument;
+import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.common.params.CollectionParams.CollectionAction;
 import org.apache.solr.common.params.ModifiableSolrParams;
+import org.apache.solr.servlet.SolrDispatchFilter;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
@@ -138,8 +143,28 @@ public class SyncSliceTest extends FullS
         "to come to the aid of their country.");
     
     // kill the leader - new leader could have all the docs or be missing one
-    chaosMonkey.killJetty(shardToLeaderJetty.get("shard1").jetty);
+    JettySolrRunner leaderJetty = shardToLeaderJetty.get("shard1").jetty;
+    SolrServer leaderClient = shardToLeaderClient.get("shard1");
+    Set<JettySolrRunner> jetties = new HashSet<JettySolrRunner>();
+    for (int i = 0; i < shardCount; i++) {
+      jetties.add(shardToJetty.get("shard1").get(i).jetty);
+    }
+    jetties.remove(leaderJetty);
+    
+    chaosMonkey.killJetty(leaderJetty);
 
+    JettySolrRunner upJetty = jetties.iterator().next();
+    // we are careful to make sure the downed node is no longer in the state,
+    // because on some systems (especially freebsd w/ blackhole enabled), trying
+    // to talk to a downed node causes grief
+    int tries = 0;
+    while (((SolrDispatchFilter) upJetty.getDispatchFilter().getFilter()).getCores().getZkController().getZkStateReader().getCloudState().liveNodesContain(clientToInfo.get(new CloudSolrServerClient(leaderClient)).get(ZkStateReader.NODE_NAME_PROP))) {
+      if (tries++ == 120) {
+        fail("Shard still reported as live in zk");
+      }
+      Thread.sleep(1000);
+    }
+    
     waitForThingsToLevelOut();
     
     checkShardConsistency(false, true);