From 6073e39c99807305b19d77f6cc7b3a44b799ade4 Mon Sep 17 00:00:00 2001 From: Pushkar Raste Date: Thu, 8 Dec 2016 22:36:36 +0000 Subject: [PATCH 1/7] More reliable check for PeerSync vs Replication --- .../solr/cloud/PeerSyncReplicationTest.java | 25 +++++-------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/solr/core/src/test/org/apache/solr/cloud/PeerSyncReplicationTest.java b/solr/core/src/test/org/apache/solr/cloud/PeerSyncReplicationTest.java index e00ea3c48118..90701d16d617 100644 --- a/solr/core/src/test/org/apache/solr/cloud/PeerSyncReplicationTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/PeerSyncReplicationTest.java @@ -20,6 +20,8 @@ import java.io.IOException; import java.lang.invoke.MethodHandles; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -41,7 +43,6 @@ import org.apache.solr.common.cloud.Slice; import org.apache.solr.common.cloud.ZkStateReader; import org.apache.solr.common.params.ModifiableSolrParams; -import org.apache.solr.handler.ReplicationHandler; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -121,7 +122,7 @@ public void test() throws Exception { List otherJetties = getOtherAvailableJetties(initialLeaderJetty); CloudJettyRunner neverLeader = otherJetties.get(otherJetties.size() - 1); otherJetties.remove(neverLeader) ; - + // first shutdown a node that will never be a leader forceNodeFailures(singletonList(neverLeader)); @@ -253,14 +254,6 @@ private void bringUpDeadNodeAndEnsureNoReplication(CloudJettyRunner leaderJetty, // disable fingerprint check if needed System.setProperty("solr.disableFingerprint", String.valueOf(disableFingerprint)); - long numRequestsBefore = (Long) leaderJetty.jetty - .getCoreContainer() - .getCores() - .iterator() - .next() - .getRequestHandler(ReplicationHandler.PATH) - .getStatistics().get("requests"); - indexInBackground(50); // bring back dead node and ensure it recovers @@ -279,15 +272,9 @@ private void bringUpDeadNodeAndEnsureNoReplication(CloudJettyRunner leaderJetty, long cloudClientDocs = cloudClient.query(new SolrQuery("*:*")).getResults().getNumFound(); assertEquals(docId, cloudClientDocs); - long numRequestsAfter = (Long) leaderJetty.jetty - .getCoreContainer() - .getCores() - .iterator() - .next() - .getRequestHandler(ReplicationHandler.PATH) - .getStatistics().get("requests"); - - assertEquals("PeerSync failed. Had to fail back to replication", numRequestsBefore, numRequestsAfter); + // if there was no replication, we should not have replication.properties file + String replicationProperties = (String) nodeToBringUp.jetty.getSolrHome() + "/cores/" + DEFAULT_TEST_COLLECTION_NAME + "/data/replication.properties"; + assertTrue("PeerSync failed. Had to fail back to replication", Files.notExists(Paths.get(replicationProperties))); } From b47fd6acd30f5b9cbf7846d3e9edcef7c0182286 Mon Sep 17 00:00:00 2001 From: Pushkar Raste Date: Wed, 14 Dec 2016 17:38:05 +0000 Subject: [PATCH 2/7] Fixing replication test --- .../org/apache/solr/handler/IndexFetcher.java | 7 +++- .../LeaderFailureAfterFreshStartTest.java | 38 ++++++++----------- 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java b/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java index bdbd4e797ad8..d440f55e6836 100644 --- a/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java +++ b/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java @@ -685,7 +685,12 @@ private void logReplicationTimeAndConfFiles(Collection> modi sb = readToStringBuilder(replicationTime, props.getProperty(REPLICATION_FAILED_AT_LIST)); props.setProperty(REPLICATION_FAILED_AT_LIST, sb.toString()); } - + try { + dir.deleteFile(REPLICATION_PROPERTIES); + } catch(IOException e) { + LOG.info("No replication.properties found. Replicating for the first time"); + } + final IndexOutput out = dir.createOutput(REPLICATION_PROPERTIES, DirectoryFactory.IOCONTEXT_NO_CACHE); Writer outFile = new OutputStreamWriter(new PropertiesOutputStream(out), StandardCharsets.UTF_8); try { diff --git a/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java b/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java index ef213860c639..27a9ba4c5910 100644 --- a/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java @@ -19,6 +19,8 @@ import java.io.IOException; import java.lang.invoke.MethodHandles; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; @@ -26,6 +28,7 @@ import java.util.Set; import java.util.stream.Collectors; +import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang.RandomStringUtils; import org.apache.lucene.util.LuceneTestCase.Slow; import org.apache.solr.client.solrj.SolrServerException; @@ -38,7 +41,6 @@ import org.apache.solr.common.cloud.Slice; import org.apache.solr.common.cloud.ZkStateReader; import org.apache.solr.common.params.ModifiableSolrParams; -import org.apache.solr.handler.ReplicationHandler; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -119,7 +121,7 @@ public void test() throws Exception { checkShardConsistency(false, true); // index a few docs and commit - for (int i = 0; i < 100; i++) { + for (int i = 0; i < 50; i++) { indexDoc(id, docId, i1, 50, tlong, 50, t1, "document number " + docId++); } @@ -131,38 +133,28 @@ public void test() throws Exception { // start the freshNode ChaosMonkey.start(freshNode.jetty); nodesDown.remove(freshNode); - waitTillNodesActive(); - waitForThingsToLevelOut(30); - //TODO check how to see if fresh node went into recovery (may be check count for replication handler on new leader) + Thread.sleep(2000); - long numRequestsBefore = (Long) secondNode.jetty - .getCoreContainer() - .getCores() - .iterator() - .next() - .getRequestHandler(ReplicationHandler.PATH) - .getStatistics().get("requests"); + // the first time freshNode synced by replication, there should be replication.properties, compute its MD5 digest + String replicationProperties = (String) freshNode.jetty.getSolrHome() + "/cores/" + DEFAULT_TEST_COLLECTION_NAME + "/data/replication.properties"; + String replicationPropertiesMD5 = DigestUtils.md5Hex(Files.readAllBytes(Paths.get(replicationProperties))); // shutdown the original leader log.info("Now shutting down initial leader"); forceNodeFailures(singletonList(initialLeaderJetty)); waitForNewLeader(cloudClient, "shard1", (Replica)initialLeaderJetty.client.info , 15); + waitTillNodesActive(); log.info("Updating mappings from zk"); updateMappingsFromZk(jettys, clients, true); - long numRequestsAfter = (Long) secondNode.jetty - .getCoreContainer() - .getCores() - .iterator() - .next() - .getRequestHandler(ReplicationHandler.PATH) - .getStatistics().get("requests"); - - assertEquals("Node went into replication", numRequestsBefore, numRequestsAfter); + CloudJettyRunner newLeader = shardToLeaderJetty.get("shard1"); + + assertEquals("Fresh node became the new leader", secondNode, newLeader); - success = true; + // if there was no replication, replication.properties file should not have changed + assertEquals("PeerSync failed. Had to fail back to replication", replicationPropertiesMD5, DigestUtils.md5Hex(Files.readAllBytes(Paths.get(replicationProperties)))); } finally { System.clearProperty("solr.disableFingerprint"); } @@ -196,7 +188,7 @@ private void forceNodeFailures(List replicasToShutDown) throws private void waitTillNodesActive() throws Exception { - for (int i = 0; i < 60; i++) { + for (int i = 0; i < 10; i++) { Thread.sleep(3000); ZkStateReader zkStateReader = cloudClient.getZkStateReader(); ClusterState clusterState = zkStateReader.getClusterState(); From 9e75e1d2f4bcaf9811a2deb727aa8b7bfeda1f4a Mon Sep 17 00:00:00 2001 From: Pushkar Raste Date: Fri, 16 Dec 2016 17:14:31 +0000 Subject: [PATCH 3/7] Better way to identify replication vs peersync for the PeerSyncReplicationTest --- .../LeaderFailureAfterFreshStartTest.java | 41 +++++++++++-------- .../solr/cloud/PeerSyncReplicationTest.java | 10 +++-- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java b/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java index 27a9ba4c5910..3ad87d76fee4 100644 --- a/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java @@ -19,8 +19,6 @@ import java.io.IOException; import java.lang.invoke.MethodHandles; -import java.nio.file.Files; -import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; @@ -28,7 +26,6 @@ import java.util.Set; import java.util.stream.Collectors; -import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang.RandomStringUtils; import org.apache.lucene.util.LuceneTestCase.Slow; import org.apache.solr.client.solrj.SolrServerException; @@ -41,6 +38,7 @@ import org.apache.solr.common.cloud.Slice; import org.apache.solr.common.cloud.ZkStateReader; import org.apache.solr.common.params.ModifiableSolrParams; +import org.apache.solr.handler.ReplicationHandler; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -121,7 +119,7 @@ public void test() throws Exception { checkShardConsistency(false, true); // index a few docs and commit - for (int i = 0; i < 50; i++) { + for (int i = 0; i < 100; i++) { indexDoc(id, docId, i1, 50, tlong, 50, t1, "document number " + docId++); } @@ -135,11 +133,15 @@ public void test() throws Exception { nodesDown.remove(freshNode); waitTillNodesActive(); - Thread.sleep(2000); - - // the first time freshNode synced by replication, there should be replication.properties, compute its MD5 digest - String replicationProperties = (String) freshNode.jetty.getSolrHome() + "/cores/" + DEFAULT_TEST_COLLECTION_NAME + "/data/replication.properties"; - String replicationPropertiesMD5 = DigestUtils.md5Hex(Files.readAllBytes(Paths.get(replicationProperties))); + // check how to see if fresh node went into recovery (may be check count for replication handler on the new leader) + // There should be a better way to do this + long numRequestsBefore = (Long) secondNode.jetty + .getCoreContainer() + .getCores() + .iterator() + .next() + .getRequestHandler(ReplicationHandler.PATH) + .getStatistics().get("requests"); // shutdown the original leader log.info("Now shutting down initial leader"); @@ -149,12 +151,17 @@ public void test() throws Exception { log.info("Updating mappings from zk"); updateMappingsFromZk(jettys, clients, true); - CloudJettyRunner newLeader = shardToLeaderJetty.get("shard1"); - - assertEquals("Fresh node became the new leader", secondNode, newLeader); + long numRequestsAfter = (Long) secondNode.jetty + .getCoreContainer() + .getCores() + .iterator() + .next() + .getRequestHandler(ReplicationHandler.PATH) + .getStatistics().get("requests"); + + assertEquals("Node went into replication", numRequestsBefore, numRequestsAfter); - // if there was no replication, replication.properties file should not have changed - assertEquals("PeerSync failed. Had to fail back to replication", replicationPropertiesMD5, DigestUtils.md5Hex(Files.readAllBytes(Paths.get(replicationProperties)))); + success = true; } finally { System.clearProperty("solr.disableFingerprint"); } @@ -188,7 +195,7 @@ private void forceNodeFailures(List replicasToShutDown) throws private void waitTillNodesActive() throws Exception { - for (int i = 0; i < 10; i++) { + for (int i = 0; i < 60; i++) { Thread.sleep(3000); ZkStateReader zkStateReader = cloudClient.getZkStateReader(); ClusterState clusterState = zkStateReader.getClusterState(); @@ -197,8 +204,10 @@ private void waitTillNodesActive() throws Exception { Collection replicas = slice.getReplicas(); boolean allActive = true; + Collection nodesDownNames = nodesDown.stream().map(n -> n.coreNodeName).collect(Collectors.toList()); + Collection replicasToCheck = null; - replicasToCheck = replicas.stream().filter(r -> nodesDown.contains(r.getName())) + replicasToCheck = replicas.stream().filter(r -> !nodesDownNames.contains(r.getName())) .collect(Collectors.toList()); for (Replica replica : replicasToCheck) { diff --git a/solr/core/src/test/org/apache/solr/cloud/PeerSyncReplicationTest.java b/solr/core/src/test/org/apache/solr/cloud/PeerSyncReplicationTest.java index 90701d16d617..d309914bab88 100644 --- a/solr/core/src/test/org/apache/solr/cloud/PeerSyncReplicationTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/PeerSyncReplicationTest.java @@ -50,7 +50,7 @@ import static java.util.Collections.singletonList; /** - * Test sync peer sync when a node restarts and documents are indexed when node was down. + * Test PeerSync when a node restarts and documents are indexed when node was down. * * This test is modeled after SyncSliceTest */ @@ -200,7 +200,7 @@ private void indexInBackground(int numDocs) { private void forceNodeFailures(List replicasToShutDown) throws Exception { for (CloudJettyRunner replicaToShutDown : replicasToShutDown) { chaosMonkey.killJetty(replicaToShutDown); - waitForNoShardInconsistency(); + Thread.sleep(3000); } int totalDown = 0; @@ -289,9 +289,11 @@ private void waitTillNodesActive() throws Exception { Collection replicas = slice.getReplicas(); boolean allActive = true; + Collection nodesDownNames = nodesDown.stream().map(n -> n.coreNodeName).collect(Collectors.toList()); + Collection replicasToCheck = null; - replicasToCheck = replicas.stream().filter(r -> nodesDown.contains(r.getName())) - .collect(Collectors.toList()); + replicasToCheck = replicas.stream().filter(r -> !nodesDownNames.contains(r.getName())) + .collect(Collectors.toList()); for (Replica replica : replicasToCheck) { if (!clusterState.liveNodesContain(replica.getNodeName()) || replica.getState() != Replica.State.ACTIVE) { From 2f1c5a8f9b2187bbda4673e66e909e5f223e1432 Mon Sep 17 00:00:00 2001 From: Pushkar Raste Date: Thu, 29 Dec 2016 18:05:47 +0000 Subject: [PATCH 4/7] Use better replication check --- .../LeaderFailureAfterFreshStartTest.java | 53 +++++++++++-------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java b/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java index 3ad87d76fee4..c28e4f49393d 100644 --- a/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java @@ -19,13 +19,17 @@ import java.io.IOException; import java.lang.invoke.MethodHandles; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.stream.Collectors; +import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang.RandomStringUtils; import org.apache.lucene.util.LuceneTestCase.Slow; import org.apache.solr.client.solrj.SolrServerException; @@ -127,22 +131,25 @@ public void test() throws Exception { waitForThingsToLevelOut(30); checkShardConsistency(false, true); + + // bring down the other node and index a few docs; so the leader and other node segments diverge + forceNodeFailures(singletonList(secondNode)); + for (int i = 0; i < 10; i++) { + indexDoc(id, docId, i1, 50, tlong, 50, t1, + "document number " + docId++); + if(i % 2 == 0) { + commit(); + } + } + commit(); + restartNodes(singletonList(secondNode)); // start the freshNode - ChaosMonkey.start(freshNode.jetty); - nodesDown.remove(freshNode); - waitTillNodesActive(); - - // check how to see if fresh node went into recovery (may be check count for replication handler on the new leader) - // There should be a better way to do this - long numRequestsBefore = (Long) secondNode.jetty - .getCoreContainer() - .getCores() - .iterator() - .next() - .getRequestHandler(ReplicationHandler.PATH) - .getStatistics().get("requests"); + restartNodes(singletonList(freshNode)); + String replicationProperties = (String) freshNode.jetty.getSolrHome() + "/cores/" + DEFAULT_TEST_COLLECTION_NAME + "/data/replication.properties"; + String md5 = DigestUtils.md5Hex(Files.readAllBytes(Paths.get(replicationProperties))); + // shutdown the original leader log.info("Now shutting down initial leader"); forceNodeFailures(singletonList(initialLeaderJetty)); @@ -150,22 +157,22 @@ public void test() throws Exception { waitTillNodesActive(); log.info("Updating mappings from zk"); updateMappingsFromZk(jettys, clients, true); - - long numRequestsAfter = (Long) secondNode.jetty - .getCoreContainer() - .getCores() - .iterator() - .next() - .getRequestHandler(ReplicationHandler.PATH) - .getStatistics().get("requests"); - - assertEquals("Node went into replication", numRequestsBefore, numRequestsAfter); + assertEquals("Node went into replication", md5, DigestUtils.md5Hex(Files.readAllBytes(Paths.get(replicationProperties)))); success = true; } finally { System.clearProperty("solr.disableFingerprint"); } } + + private void restartNodes(List nodesToRestart) throws Exception { + for (CloudJettyRunner node : nodesToRestart) { + chaosMonkey.start(node.jetty); + nodesDown.remove(node); + } + waitTillNodesActive(); + checkShardConsistency(false, true); + } private void forceNodeFailures(List replicasToShutDown) throws Exception { From 5aaa6bfee7f0f03461e7b21b8d90f7430d5ca38e Mon Sep 17 00:00:00 2001 From: Pushkar Raste Date: Mon, 2 Jan 2017 23:18:23 +0000 Subject: [PATCH 5/7] Remove uncoditional sleep() --- .../apache/solr/cloud/LeaderFailureAfterFreshStartTest.java | 5 +++-- .../test/org/apache/solr/cloud/PeerSyncReplicationTest.java | 3 --- .../org/apache/solr/cloud/AbstractDistribZkTestBase.java | 4 ++-- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java b/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java index c28e4f49393d..b10ad1ed96fe 100644 --- a/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java @@ -24,7 +24,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; -import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -47,6 +46,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.carrotsearch.randomizedtesting.annotations.Repeat; + import static java.util.Collections.singletonList; /** @@ -97,6 +98,7 @@ public void distribSetUp() throws Exception { } @Test + @Repeat(iterations=20) public void test() throws Exception { handle.clear(); handle.put("timestamp", SKIPVAL); @@ -178,7 +180,6 @@ private void restartNodes(List nodesToRestart) throws Exceptio private void forceNodeFailures(List replicasToShutDown) throws Exception { for (CloudJettyRunner replicaToShutDown : replicasToShutDown) { chaosMonkey.killJetty(replicaToShutDown); - waitForNoShardInconsistency(); } int totalDown = 0; diff --git a/solr/core/src/test/org/apache/solr/cloud/PeerSyncReplicationTest.java b/solr/core/src/test/org/apache/solr/cloud/PeerSyncReplicationTest.java index d309914bab88..f0411e1fcf70 100644 --- a/solr/core/src/test/org/apache/solr/cloud/PeerSyncReplicationTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/PeerSyncReplicationTest.java @@ -200,7 +200,6 @@ private void indexInBackground(int numDocs) { private void forceNodeFailures(List replicasToShutDown) throws Exception { for (CloudJettyRunner replicaToShutDown : replicasToShutDown) { chaosMonkey.killJetty(replicaToShutDown); - Thread.sleep(3000); } int totalDown = 0; @@ -219,8 +218,6 @@ private void forceNodeFailures(List replicasToShutDown) throws assertEquals(getShardCount() - totalDown, jetties.size()); nodesDown.addAll(replicasToShutDown); - - Thread.sleep(3000); } diff --git a/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java b/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java index d04d9968b6e6..259af8166eb4 100644 --- a/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java +++ b/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java @@ -238,8 +238,8 @@ static void waitForNewLeader(CloudSolrClient cloudClient, String shardName, Repl ClusterState clusterState = zkStateReader.getClusterState(); DocCollection coll = clusterState.getCollection("collection1"); Slice slice = coll.getSlice(shardName); - if(slice.getLeader() != oldLeader && slice.getState() == State.ACTIVE) { - log.info("New leader got elected in {} secs", i); + if(slice.getLeader() != null && !slice.getLeader().equals(oldLeader) && slice.getState() == State.ACTIVE) { + log.info("Old leader {}, new leader. New leader got elected in {} secs", oldLeader, slice.getLeader(), i); break; } From 34cfc49e501d6cf6e41311c0c030b3611ee218f7 Mon Sep 17 00:00:00 2001 From: Pushkar Raste Date: Mon, 2 Jan 2017 23:19:19 +0000 Subject: [PATCH 6/7] Remove test repeatation --- .../org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java b/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java index b10ad1ed96fe..766b2cd539c3 100644 --- a/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java @@ -41,7 +41,6 @@ import org.apache.solr.common.cloud.Slice; import org.apache.solr.common.cloud.ZkStateReader; import org.apache.solr.common.params.ModifiableSolrParams; -import org.apache.solr.handler.ReplicationHandler; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; From 4483bccb6cb9c81311d7528ab505ed891d31d14f Mon Sep 17 00:00:00 2001 From: Pushkar Raste Date: Mon, 2 Jan 2017 23:19:46 +0000 Subject: [PATCH 7/7] Remove test repeatation --- .../apache/solr/cloud/LeaderFailureAfterFreshStartTest.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java b/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java index 766b2cd539c3..8d566f4aa0c4 100644 --- a/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/LeaderFailureAfterFreshStartTest.java @@ -45,8 +45,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.carrotsearch.randomizedtesting.annotations.Repeat; - import static java.util.Collections.singletonList; /** @@ -97,7 +95,6 @@ public void distribSetUp() throws Exception { } @Test - @Repeat(iterations=20) public void test() throws Exception { handle.clear(); handle.put("timestamp", SKIPVAL);