[
http://jira.jboss.com/jira/browse/JGRP-444?page=comments#action_12375757 ]
Michael Newcomb commented on JGRP-444:
--------------------------------------
Well, the member leaving is the one who wants to push his data out and he is no longer a
member if/when he leaves. So, he needs to push his data back out to the grid before he
actually leaves. That's why the leaving member, starts a flush, pushes his data (and
tells everyone to no longer send him data), stops the flush and then leaves.
The leaving node needs to be sure the data is received so, a request/response is used and
the message is sent through a MessageDispatcher. However, the channel will hold the
message because a flush is in progress. I can get around that by adding the FLUSH_BYPASS
to the message but when the RequestCorrelator gets the request and sends the response,
each of the channels hold the message because a flush is in progress.
So, RequestCorrelator would need to respect messages that are FLUHS_BYPASSABLE...
I may not be understanding your suggestion about using block()...
RequestCorrelator does not respect FLUSH.FlushHeader.BYPASS_FLUSH
-----------------------------------------------------------------
Key: JGRP-444
URL:
http://jira.jboss.com/jira/browse/JGRP-444
Project: JGroups
Issue Type: Bug
Affects Versions: 2.5
Environment: 2.5 alpha 2
Reporter: Michael Newcomb
Assigned To: Vladimir Blagojevic
Fix For: 2.7
private void handleRequest(Message req, Header hdr)
{
...
rsp=req.makeReply();
if(rsp_buf != null)
rsp.setBuffer(rsp_buf);
rsp_hdr=new Header(Header.RSP, hdr.id, false, name);
rsp.putHeader(name, rsp_hdr);
// *************** patch *****************
// can't check for FLUSH.FlushHeader.BYPASS_FLUSH because it has package
protection, so just check for FLUSH header
//
if (req.getHeader(org.jgroups.protocols.pbcast.FLUSH.NAME) != null)
{
rsp.putHeader(org.jgroups.protocols.pbcast.FLUSH.NAME,
new
org.jgroups.protocols.pbcast.FLUSH.FlushHeader(org.jgroups.protocols.pbcast.FLUSH.FlushHeader.FLUSH_BYPASS));
}
// *************** patch *****************
if(log.isTraceEnabled())
log.trace(new StringBuffer("sending rsp for
").append(rsp_hdr.id).append(" to ").append(rsp.getDest()));
...
}
--
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