mirror of https://github.com/apache/activemq.git
https://issues.apache.org/jira/browse/AMQ-3685 - a few more fixes for failover cluster update ... handle well original broker restarting and avoid deadlock
git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@1241426 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
b567bd478b
commit
19cb932816
|
@ -705,7 +705,11 @@ public class FailoverTransport implements CompositeTransport {
|
|||
|
||||
private List<URI> getConnectList() {
|
||||
ArrayList<URI> l = new ArrayList<URI>(uris);
|
||||
l.addAll(updated);
|
||||
for (URI uri : updated) {
|
||||
if (!l.contains(uri)) {
|
||||
l.add(uri);
|
||||
}
|
||||
}
|
||||
boolean removed = false;
|
||||
if (failedConnectTransportURI != null) {
|
||||
removed = l.remove(failedConnectTransportURI);
|
||||
|
@ -1167,13 +1171,13 @@ public class FailoverTransport implements CompositeTransport {
|
|||
updated.clear();
|
||||
if (updatedURIs != null && updatedURIs.length > 0) {
|
||||
for (URI uri : updatedURIs) {
|
||||
if (uri != null && !uris.contains(uri)) {
|
||||
if (uri != null && !updated.contains(uri)) {
|
||||
updated.add(uri);
|
||||
}
|
||||
}
|
||||
synchronized (reconnectMutex) {
|
||||
if (!(copy.isEmpty() && updated.isEmpty()) && !copy.equals(updated)) {
|
||||
buildBackups();
|
||||
if (!(copy.isEmpty() && updated.isEmpty()) && !copy.equals(updated)) {
|
||||
buildBackups();
|
||||
synchronized (reconnectMutex) {
|
||||
reconnect(rebalance);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -72,6 +72,7 @@ public class FailoverComplexClusterTest extends FailoverClusterTestSupport {
|
|||
Thread.sleep(2000);
|
||||
setClientUrl("failover://(" + BROKER_A_CLIENT_TC_ADDRESS + "," + BROKER_B_CLIENT_TC_ADDRESS + ")");
|
||||
createClients();
|
||||
Thread.sleep(2000);
|
||||
|
||||
runTests(false);
|
||||
}
|
||||
|
@ -84,10 +85,37 @@ public class FailoverComplexClusterTest extends FailoverClusterTestSupport {
|
|||
|
||||
setClientUrl("failover://(" + BROKER_A_CLIENT_TC_ADDRESS + "," + BROKER_B_CLIENT_TC_ADDRESS + ")");
|
||||
createClients();
|
||||
Thread.sleep(2000);
|
||||
|
||||
runTests(true);
|
||||
}
|
||||
|
||||
public void testOriginalBrokerRestart() throws Exception {
|
||||
initSingleTcBroker("", null);
|
||||
|
||||
Thread.sleep(2000);
|
||||
|
||||
setClientUrl("failover://(" + BROKER_A_CLIENT_TC_ADDRESS + "," + BROKER_B_CLIENT_TC_ADDRESS + ")");
|
||||
createClients();
|
||||
Thread.sleep(2000);
|
||||
|
||||
assertClientsConnectedToThreeBrokers();
|
||||
|
||||
getBroker(BROKER_A_NAME).stop();
|
||||
getBroker(BROKER_A_NAME).waitUntilStopped();
|
||||
removeBroker(BROKER_A_NAME);
|
||||
|
||||
Thread.sleep(5000);
|
||||
|
||||
assertClientsConnectedToTwoBrokers();
|
||||
|
||||
createBrokerA(false, "", null);
|
||||
getBroker(BROKER_A_NAME).waitUntilStarted();
|
||||
Thread.sleep(5000);
|
||||
|
||||
assertClientsConnectedToThreeBrokers();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Runs a 3 tests: <br/>
|
||||
|
|
Loading…
Reference in New Issue