[
https://issues.jboss.org/browse/JGRP-1724?page=com.atlassian.jira.plugin....
]
Bela Ban updated JGRP-1724:
---------------------------
Description:
When we have coord A and B, the following can happen:
* A joins: view=A|0
* B joins: view=A|1
* A leaves, view B|2 should be multicast by A to B
--> B|2 is never received by B. B has to wait until failure detection detects that A is
absent and installs a new view
--> This is not incorrect, but takes more time than A installing the last view B|2
before it leaves
The reason is that CoordGmsImpl.leave() sets {{leaving}} to true, which changes the impl
from CoordGmsImpl to ClientGmsImpl. However, the latter doesn't handle the LEAVE
request.
SOLUTION:
* Instead of using field {{leaving}}, use a (stack-based) variable {{is_leaving}} in
handleMembershipChange().
was:
When we have coord A and B, the following can happen:
* A joins: view=A|0
* B joins: view=A|1
* A leaves, view B|2 should be multicast by A to B
--> B|2 is never received by B. B has to wait until failure detection detects that A is
absent and installs a new view
--> This is not incorrect, but takes more time than A installing the last view B|2
before it leaves
GMS: join and immediate leave of coordinator doesn't install new
view
---------------------------------------------------------------------
Key: JGRP-1724
URL:
https://issues.jboss.org/browse/JGRP-1724
Project: JGroups
Issue Type: Bug
Reporter: Bela Ban
Assignee: Bela Ban
Fix For: 3.4.1, 3.5
When we have coord A and B, the following can happen:
* A joins: view=A|0
* B joins: view=A|1
* A leaves, view B|2 should be multicast by A to B
--> B|2 is never received by B. B has to wait until failure detection detects that A
is absent and installs a new view
--> This is not incorrect, but takes more time than A installing the last view B|2
before it leaves
The reason is that CoordGmsImpl.leave() sets {{leaving}} to true, which changes the impl
from CoordGmsImpl to ClientGmsImpl. However, the latter doesn't handle the LEAVE
request.
SOLUTION:
* Instead of using field {{leaving}}, use a (stack-based) variable {{is_leaving}} in
handleMembershipChange().
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira