[jboss-jira] [JBoss JIRA] Created: (JGRP-682) TUNNEL: reconnector thread is not started in certain scenarios
Bela Ban (JIRA)
jira-events at lists.jboss.org
Tue Feb 5 04:35:04 EST 2008
TUNNEL: reconnector thread is not started in certain scenarios
--------------------------------------------------------------
Key: JGRP-682
URL: http://jira.jboss.com/jira/browse/JGRP-682
Project: JGroups
Issue Type: Bug
Reporter: Bela Ban
Assigned To: Vladimir Blagojevic
Fix For: 2.6.2, 2.7
This is in TUNNEL.StubConnectionListener:
public void connectionStatusChange(int newState) {
if(currentState == RouterStub.STATUS_CONNECTED && newState == RouterStub.STATUS_CONNECTION_LOST){
startReconnecting();
}
else if(currentState != RouterStub.STATUS_CONNECTED && newState == RouterStub.STATUS_CONNECTED){
stopReconnecting();
Thread receiver = new Thread(Util.getGlobalThreadGroup(), new TunnelReceiver(), "TUNNEL receiver");
receiver.setDaemon(true);
receiver.start();
}
currentState = newState;
}
# 1: why do we need 3 states ? Why not just CONNECTED and DISCONNECTED ?
#2: the logic above is incorrect, as it doesn't handle *all* state transitions ! For example, if we go from DISCONNECTED to CONNECTION_LOST, we will *not* start the reconnector thread !
We can reproduce #2 through the following steps:
- Start node A (channel with with tunnel.xml) (GossipRouter is not running)
- Start node B (start GossipRouter then channel with tunnel.xml)
==> The nodes will not merge. Reason: there is never a CONNECT from node A, only REGISTER calls. If there is no CONNECT, we never set the GossipRouter$AddressEntry.output field and therefore can never send anything !
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list