[
https://issues.jboss.org/browse/JGRP-1428?page=com.atlassian.jira.plugin....
]
Bela Ban commented on JGRP-1428:
--------------------------------
Use case:
- The view is {A,B,C,D}
- A invokes a group request on the cluster
- The GroupRequest is created with targets A, B, C and D
- In RequestCorrelator.sendRequest(), we add the request to the requests hashmap: whenever
a view is received, we mark non-members in the request as suspected and potentially cause
the request to return (if it is blocking)
- However, if a new view {A,B,C} is received *after* creation of the request, but *before*
the request is registered for view changes, the request will *not* mark D in its requests
hashmap as suspected
--> The request will block until (1) another view change (e.g. {A,B,C,F}) is received
or (2) until it times out
SOLUTION:
- In RequestCorrelator.sendRequest(), after registering the request for view changes, we
simply call Request.viewChange(View) with the current view. This will cause D to be marked
as suspected
UnicastRequest and GroupRequest should mark a target as suspected if
the target has already left the cluster at creation time
-----------------------------------------------------------------------------------------------------------------------------
Key: JGRP-1428
URL:
https://issues.jboss.org/browse/JGRP-1428
Project: JGroups
Issue Type: Bug
Affects Versions: 3.0.5, 3.1
Reporter: Dan Berindei
Assignee: Bela Ban
Priority: Critical
Fix For: 3.0.6, 3.1
UnicastRequest and GroupsRequest both detect if a target has left the cluster and mark
its response as "suspected".
However, if the node has already left the cluster by the time the request is created, its
response is not marked as "suspected" and the request never properly finishes.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira