[
http://jira.jboss.com/jira/browse/JGRP-682?page=all ]
Vladimir Blagojevic resolved JGRP-682.
--------------------------------------
Resolution: Done
Resolved on HEAD (2.7)
Revision Changes Path
1.32 +5 -3 JGroups/tests/junit/org/jgroups/tests/ChannelTestBase.java
1.31 +186 -174 JGroups/src/org/jgroups/stack/RouterStub.java
Resolved on 2.6
1.30.4.1 +186 -174 JGroups/src/org/jgroups/stack/RouterStub.java
1.45.2.2 +186 -165 JGroups/src/org/jgroups/protocols/TUNNEL.java
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