[jboss-jira] [JBoss JIRA] Updated: (JGRP-168) RpcDispatcher fails after shun

Bela Ban (JIRA) jira-events at lists.jboss.org
Fri Sep 21 04:46:11 EDT 2007


     [ http://jira.jboss.com/jira/browse/JGRP-168?page=all ]

Bela Ban updated JGRP-168:
--------------------------

    Attachment: udp.xml

> RpcDispatcher fails after shun
> ------------------------------
>
>                 Key: JGRP-168
>                 URL: http://jira.jboss.com/jira/browse/JGRP-168
>             Project: JGroups
>          Issue Type: Bug
>    Affects Versions: 2.2.8
>         Environment: Linux
>            Reporter: sriram
>         Assigned To: Bela Ban
>             Fix For: 2.6
>
>         Attachments: udp.xml
>
>
> There are two members in a group say A and B. They call remote methods on each other using RpcDistatcher over PullPushAdapter. 
>        PullPushAdapter adapter=new PullPushAdapter(channel,this);
>         rpc=new RpcDispatcher(adapter,null,null,null,new RemoteCallHandler());
> This is the code executed to make a remote RPC call. 
>         Vector dest=view.getMembers();
>         rpc.callRemoteMethods(dest,methCall,GroupRequest.GET_NONE,0);
> I freeze a member "A" (crtl-Z in linux)  to simulate a shun. "B" gets a viewAccepted notification that "A" is out of the group. Now I unfreeze "A" (fg in linux). "A" is now shunned and it reconnects and joins the group. (AUTO_RECONNECT configured as true in JChannel)
> Issue: "A" is not receiving any method calls made by "B". On analysis I found that RequestCorrelator in "A" is rejecting the rpc packets sent from "B". The error message given in "A" was
> discarded request from 172.16.1.198:1196 as we are not part of destination list (local_addr=172.16.1.198:1190, hdr=[Header: name=MessageDispatcher, type=REQ, id=1135858151530, rsp_expected=false], dest_mbrs=[172.16.1.193:1439, 172.16.1.198:1196])
> Note that 
> 172.16.1.198:1190 is the old address of "A" before shun/reconnect.
> 172.16.1.198:1196 is the new address of "A" after reconnect.
> 172.16.1.193:1439 is the address of "B"
> The bug is that the local_addr field in RequestCorrelator.java is not updated when the member reconnects.
> Any workarounds for this problem will be appreciated. 
> thanks,
> E.Sriram 
> Code snippets: 
> Creating the Channel and Blocks
>  String props="UDP(mcast_addr=229.2.3.4;mcast_port=45556;ip_ttl=32):"
>             +"PING(timeout=3000;num_initial_members=6;down_thread=false;up_thread=false):"
>             +"FD(max_tries=5;timeout=5000;down_thread=false;up_thread=false):"
>             +"MERGE2(down_thread=false;up_thread=false):"
>             +"VERIFY_SUSPECT(timeout=1500;down_thread=false;up_thread=false):"
>             +"pbcast.NAKACK(gc_lag=10;retransmit_timeout=600,1200,2400,4800;"
>             +"down_thread=false;up_thread=false):"
>             +"UNICAST(timeout=600,1200,2400,4800;down_thread=false;up_thread=false):"
>             +"pbcast.STABLE(desired_avg_gossip=10000;down_thread=false;up_thread=false):"
>             +"FRAG(down_thread=false;up_thread=false):"
>             +"pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;"
>             +"shun=true;print_local_addr=true)";
>         channel=new JChannel(props);
>         channel.setOpt(JChannel.AUTO_RECONNECT,Boolean.TRUE);
>         String clusterID=Configuration.get("jgroup-group-id");
>         logger.info("Connecting to clusterID:"+clusterID);
>         channel.connect(clusterID);
>         view=channel.getView();
>         PullPushAdapter adapter=new PullPushAdapter(channel,this);
>         rpc=new RpcDispatcher(adapter,null,null,null,new RemoteCallHandler());
>         rpc.addChannelListener(adapter);

-- 
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