[jboss-jira] [JBoss JIRA] Commented: (JGRP-168) RpcDispatcher fails after shun
Bela Ban (JIRA)
jira-events at lists.jboss.org
Fri Sep 21 04:50:11 EDT 2007
[ http://jira.jboss.com/jira/browse/JGRP-168?page=comments#action_12377965 ]
Bela Ban commented on JGRP-168:
-------------------------------
I tried this on 2.6, and it worked. Attached is udp.xml and RpcDispatcherBlocking.
Note that you have to set UDP.loopback="true" and FD.shun="true".
#1 I started A, then B. Then I CTRL-Z'ed B. A suspected and excluded B. After fg on B, B was shunned, left the group and rejoined.
#2 Ditto, but A was CTRL-Z'ed. Same result, A left and rejoined.
> 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: RpcDispatcherBlocking.java, 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