[jboss-jira] [JBoss JIRA] Commented: (JGRP-444) RequestCorrelator does not respect FLUSH.FlushHeader.BYPASS_FLUSH

Michael Newcomb (JIRA) jira-events at lists.jboss.org
Thu Sep 6 14:37:11 EDT 2007


    [ 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

        



More information about the jboss-jira mailing list