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/25 06:36:46 UTC

svn commit: r1365439 - in /lucene/dev/branches/branch_4x: ./ solr/ solr/core/ solr/core/src/test/org/apache/solr/cloud/FullSolrCloudTest.java solr/core/src/test/org/apache/solr/cloud/SyncSliceTest.java

Author: markrmiller
Date: Wed Jul 25 04:36:45 2012
New Revision: 1365439

URL: http://svn.apache.org/viewvc?rev=1365439&view=rev
Log:
more black hole avoidance

Modified:
    lucene/dev/branches/branch_4x/   (props changed)
    lucene/dev/branches/branch_4x/solr/   (props changed)
    lucene/dev/branches/branch_4x/solr/core/   (props changed)
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudTest.java
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/SyncSliceTest.java

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudTest.java?rev=1365439&r1=1365438&r2=1365439&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudTest.java Wed Jul 25 04:36:45 2012
@@ -685,19 +685,21 @@ public class FullSolrCloudTest extends A
     // kill a shard
     CloudJettyRunner deadShard = chaosMonkey.stopShard(SHARD2, 0);
     cloudClient.connect();
-    int tries = 0;
-    while (cloudClient
-        .getZkStateReader()
-        .getCloudState()
-        .liveNodesContain(
-            shardToJetty.get(SHARD2).get(0).info
-                .get(ZkStateReader.NODE_NAME_PROP))) {
-      if (tries++ == 60) {
-        fail("Shard still reported as live in zk");
-      }
-      Thread.sleep(1000);
+
+    // 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
+    Set<CloudJettyRunner> jetties = new HashSet<CloudJettyRunner>();
+    jetties.addAll(shardToJetty.get(SHARD2));
+    jetties.remove(deadShard);
+    
+    for (CloudJettyRunner cjetty : jetties) {
+      waitToSeeNotLive(((SolrDispatchFilter) cjetty.jetty.getDispatchFilter()
+          .getFilter()).getCores().getZkController().getZkStateReader(),
+          deadShard);
     }
-	
+    waitToSeeNotLive(cloudClient.getZkStateReader(), deadShard);
+
     // ensure shard is dead
     try {
       index_specific(deadShard.client.solrClient, id, 999, i1, 107, t1,
@@ -715,25 +717,7 @@ public class FullSolrCloudTest extends A
     // System.out.println("clouddocs:" + cloudClientDocs);
     
     // try to index to a living shard at shard2
-    
-    // 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
-    tries = 0;
-    while (((SolrDispatchFilter) shardToJetty.get(SHARD2).get(1).jetty
-        .getDispatchFilter().getFilter())
-        .getCores()
-        .getZkController()
-        .getZkStateReader()
-        .getCloudState()
-        .liveNodesContain(
-            shardToJetty.get(SHARD2).get(0).info
-                .get(ZkStateReader.NODE_NAME_PROP))) {
-      if (tries++ == 120) {
-        fail("Shard still reported as live in zk");
-      }
-      Thread.sleep(1000);
-    }
+
 	
     long numFound1 = cloudClient.query(new SolrQuery("*:*")).getResults().getNumFound();
     
@@ -812,6 +796,13 @@ public class FullSolrCloudTest extends A
     // recover over 100 docs so we do more than just peer sync (replicate recovery)
     chaosMonkey.stopJetty(deadShard);
     
+    for (CloudJettyRunner cjetty : jetties) {
+      waitToSeeNotLive(((SolrDispatchFilter) cjetty.jetty.getDispatchFilter()
+          .getFilter()).getCores().getZkController().getZkStateReader(),
+          deadShard);
+    }
+    waitToSeeNotLive(cloudClient.getZkStateReader(), deadShard);
+    
     for (int i = 0; i < 226; i++) {
       doc = new SolrInputDocument();
       doc.addField("id", 2000 + i);
@@ -1496,4 +1487,16 @@ public class FullSolrCloudTest extends A
       throw new RuntimeException(ex);
     }
   }
+  
+  protected void waitToSeeNotLive(ZkStateReader zkStateReader,
+      CloudJettyRunner cjetty) throws InterruptedException {
+    int tries = 0;
+    while (zkStateReader.getCloudState()
+        .liveNodesContain(cjetty.info.get(ZkStateReader.NODE_NAME_PROP))) {
+      if (tries++ == 120) {
+        fail("Shard still reported as live in zk");
+      }
+      Thread.sleep(1000);
+    }
+  }
 }

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/SyncSliceTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/SyncSliceTest.java?rev=1365439&r1=1365438&r2=1365439&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/SyncSliceTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/SyncSliceTest.java Wed Jul 25 04:36:45 2012
@@ -143,9 +143,7 @@ public class SyncSliceTest extends FullS
     CloudJettyRunner leaderJetty = shardToLeaderJetty.get("shard1");
 
     Set<CloudJettyRunner> jetties = new HashSet<CloudJettyRunner>();
-    for (int i = 0; i < shardCount; i++) {
-      jetties.add(shardToJetty.get("shard1").get(i));
-    }
+    jetties.addAll(shardToJetty.get("shard1"));
     jetties.remove(leaderJetty);
     
     chaosMonkey.killJetty(leaderJetty);
@@ -168,18 +166,6 @@ public class SyncSliceTest extends FullS
     assertEquals(5, cloudClientDocs);
   }
 
-  private void waitToSeeNotLive(ZkStateReader zkStateReader,
-      CloudJettyRunner cjetty) throws InterruptedException {
-    int tries = 0;
-    while (zkStateReader.getCloudState()
-        .liveNodesContain(cjetty.info.get(ZkStateReader.NODE_NAME_PROP))) {
-      if (tries++ == 120) {
-        fail("Shard still reported as live in zk");
-      }
-      Thread.sleep(1000);
-    }
-  }
-
   private void waitForThingsToLevelOut() throws Exception {
     int cnt = 0;
     boolean retry = false;