mirror of https://github.com/apache/lucene.git
SOLR-6400: SolrCloud tests are not properly testing session expiration.
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1619612 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
999f7ab30d
commit
277136452a
|
@ -98,7 +98,24 @@ Other Changes
|
|||
command and DataImportHandler responses. (ehatcher)
|
||||
|
||||
================== 4.11.0 =================
|
||||
(No Changes)
|
||||
|
||||
Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release
|
||||
|
||||
Versions of Major Components
|
||||
---------------------
|
||||
Apache Tika 1.5 (with upgraded Apache POI 3.10.1)
|
||||
Carrot2 3.9.0
|
||||
Velocity 1.7 and Velocity Tools 2.0
|
||||
Apache UIMA 2.3.1
|
||||
Apache ZooKeeper 3.4.6
|
||||
|
||||
Detailed Change List
|
||||
----------------------
|
||||
|
||||
Other Changes
|
||||
---------------------
|
||||
|
||||
* SOLR-6400: SolrCloud tests are not properly testing session expiration. (Mark Miller)
|
||||
|
||||
================== 4.10.0 =================
|
||||
|
||||
|
|
|
@ -17,8 +17,6 @@ package org.apache.solr.cloud;
|
|||
* the License.
|
||||
*/
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.apache.lucene.util.LuceneTestCase.Slow;
|
||||
import org.apache.solr.SolrTestCaseJ4;
|
||||
import org.apache.solr.common.cloud.ConnectionManager;
|
||||
|
@ -49,10 +47,9 @@ public class ConnectionManagerTest extends SolrTestCaseJ4 {
|
|||
SolrZkClient zkClient = new SolrZkClient(server.getZkAddress(), TIMEOUT);
|
||||
ConnectionManager cm = zkClient.getConnectionManager();
|
||||
try {
|
||||
System.err.println("ISEXPIRED:" + cm.isLikelyExpired());
|
||||
assertFalse(cm.isLikelyExpired());
|
||||
|
||||
zkClient.getSolrZooKeeper().pauseCnxn(TIMEOUT);
|
||||
|
||||
zkClient.getSolrZooKeeper().closeCnxn();
|
||||
|
||||
long sessionId = zkClient.getSolrZooKeeper().getSessionId();
|
||||
server.expire(sessionId);
|
||||
|
|
|
@ -212,7 +212,10 @@ public class LeaderElectionIntegrationTest extends SolrTestCaseJ4 {
|
|||
String leader = getLeader();
|
||||
int leaderPort = getLeaderPort(leader);
|
||||
ZkController zkController = containerMap.get(leaderPort).getZkController();
|
||||
zkController.getZkClient().getSolrZooKeeper().pauseCnxn(zkController.getClientTimeout() + 100);
|
||||
|
||||
zkController.getZkClient().getSolrZooKeeper().closeCnxn();
|
||||
long sessionId = zkClient.getSolrZooKeeper().getSessionId();
|
||||
zkServer.expire(sessionId);
|
||||
|
||||
for (int i = 0; i < 60; i++) { // wait till leader is changed
|
||||
if (leaderPort != getLeaderPort(getLeader())) {
|
||||
|
|
|
@ -38,6 +38,7 @@ import org.apache.solr.common.cloud.ZkStateReader;
|
|||
import org.apache.solr.util.DefaultSolrThreadFactory;
|
||||
import org.apache.zookeeper.KeeperException;
|
||||
import org.apache.zookeeper.KeeperException.NoNodeException;
|
||||
import org.apache.zookeeper.KeeperException.SessionExpiredException;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
|
@ -252,6 +253,8 @@ public class LeaderElectionTest extends SolrTestCaseJ4 {
|
|||
return leaderProps.getCoreUrl();
|
||||
} catch (NoNodeException e) {
|
||||
Thread.sleep(500);
|
||||
} catch (SessionExpiredException e) {
|
||||
Thread.sleep(500);
|
||||
}
|
||||
}
|
||||
zkClient.printLayoutToStdOut();
|
||||
|
@ -482,8 +485,11 @@ public class LeaderElectionTest extends SolrTestCaseJ4 {
|
|||
int j;
|
||||
j = random().nextInt(threads.size());
|
||||
try {
|
||||
threads.get(j).es.zkClient.getSolrZooKeeper().pauseCnxn(
|
||||
ZkTestServer.TICK_TIME * 2);
|
||||
threads.get(j).es.zkClient.getSolrZooKeeper().closeCnxn();
|
||||
if (random().nextBoolean()) {
|
||||
long sessionId = zkClient.getSolrZooKeeper().getSessionId();
|
||||
server.expire(sessionId);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
|
@ -50,12 +50,7 @@ public class SolrZooKeeper extends ZooKeeper {
|
|||
return testableLocalSocketAddress();
|
||||
}
|
||||
|
||||
/**
|
||||
* Cause this ZooKeeper object to stop receiving from the ZooKeeperServer
|
||||
* for the given number of milliseconds.
|
||||
* @param ms the number of milliseconds to pause.
|
||||
*/
|
||||
public void pauseCnxn(final long ms) {
|
||||
public void closeCnxn() {
|
||||
final Thread t = new Thread() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
@ -78,10 +73,7 @@ public class SolrZooKeeper extends ZooKeeper {
|
|||
} catch (Exception e) {
|
||||
throw new RuntimeException("Closing Zookeeper send channel failed.", e);
|
||||
}
|
||||
Thread.sleep(ms);
|
||||
}
|
||||
} catch (InterruptedException e) {
|
||||
// ignore
|
||||
} finally {
|
||||
spawnedThreads.remove(this);
|
||||
}
|
||||
|
|
|
@ -124,34 +124,12 @@ public class ChaosMonkey {
|
|||
if (solrDispatchFilter != null) {
|
||||
CoreContainer cores = solrDispatchFilter.getCores();
|
||||
if (cores != null) {
|
||||
causeConnectionLoss(jetty, cores.getZkController().getClientTimeout() + 200);
|
||||
causeConnectionLoss(jetty);
|
||||
long sessionId = cores.getZkController().getZkClient()
|
||||
.getSolrZooKeeper().getSessionId();
|
||||
zkServer.expire(sessionId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Thread thread = new Thread() {
|
||||
// {
|
||||
// setDaemon(true);
|
||||
// }
|
||||
// public void run() {
|
||||
// SolrDispatchFilter solrDispatchFilter = (SolrDispatchFilter) jetty.getDispatchFilter().getFilter();
|
||||
// if (solrDispatchFilter != null) {
|
||||
// CoreContainer cores = solrDispatchFilter.getCores();
|
||||
// if (cores != null) {
|
||||
// try {
|
||||
// Thread.sleep(ZkTestServer.TICK_TIME * 2 + 800);
|
||||
// } catch (InterruptedException e) {
|
||||
// // we act as only connection loss
|
||||
// return;
|
||||
// }
|
||||
// long sessionId = cores.getZkController().getZkClient().getSolrZooKeeper().getSessionId();
|
||||
// zkServer.expire(sessionId);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// };
|
||||
// thread.start();
|
||||
|
||||
}
|
||||
|
||||
public void expireRandomSession() throws KeeperException, InterruptedException {
|
||||
|
@ -176,18 +154,13 @@ public class ChaosMonkey {
|
|||
}
|
||||
|
||||
public static void causeConnectionLoss(JettySolrRunner jetty) {
|
||||
causeConnectionLoss(jetty, ZkTestServer.TICK_TIME * 2 + 200);
|
||||
}
|
||||
|
||||
public static void causeConnectionLoss(JettySolrRunner jetty, int pauseTime) {
|
||||
SolrDispatchFilter solrDispatchFilter = (SolrDispatchFilter) jetty
|
||||
.getDispatchFilter().getFilter();
|
||||
if (solrDispatchFilter != null) {
|
||||
CoreContainer cores = solrDispatchFilter.getCores();
|
||||
if (cores != null) {
|
||||
SolrZkClient zkClient = cores.getZkController().getZkClient();
|
||||
// must be at least double tick time...
|
||||
zkClient.getSolrZooKeeper().pauseCnxn(pauseTime);
|
||||
zkClient.getSolrZooKeeper().closeCnxn();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue