Re: [jgroups-users] BUG / Nodes not determining the same merge leader when merging 2 clusters
Questions/problems related to using JGroups <[email protected]> Fri, 1 Sep 2017 17:19:19 +0200
| Newsgroups | gmane.comp.java.javagroups.general |
|---|---|
| Message-ID | <mailman.15985.1504279171.14626.javagroups-users@lists.sourceforge.net> |
Yes. I'm always grateful for pull requests fixing issues, but for a current version. This would be either master or the 3.6 branch, anything else I'm not interested. I do know of folks though who maintain their own branches with fixes, until they can move to a 'supported' and recent release. Fair enough if it works for them. Cheers, On 01/09/17 16:55, Questions/problems related to using JGroups wrote: > Thanks a lot for the quick answer ! > > I guess that would be THE answer. But I had no choice but working on this version. The goal was to fulfill the obligation to report any code change on open source software ! > > I did 2 others bug fixes on FD protocol stacks ... And I assume that the answer would be the same ! > > Thanks a lot again ! ;-) > Thomas > > -----Message d'origine----- > De : Questions/problems related to using JGroups [mailto:[email protected]] > Envoyé : vendredi 1 septembre 2017 16:41 > À : [email protected] > Objet : Re: [jgroups-users] BUG / Nodes not determining the same merge leader when merging 2 clusters > > > > On 01/09/17 15:54, Questions/problems related to using JGroups wrote: >> Hello, >> >> First, thanks to JGroups community for all the great work done ! > > Thanks! > >> I've been working on a distributed system using JGroups 2.12.1.Final >> to solve some issues. > > No! I'm afraid, but I just lost interest:-) > 2.12.1 is ~7 years old; and I don't support such an old version. See [1]. > > If you insist on staying on 2.12.x, I suggest apply your patch locally and create and use a new version. > > [1] > https://github.com/belaban/workshop/blob/master/slides/admin.adoc#problem-4-jgroups-versions > > >> And I suspect a _bug on "Discovery" class/protocol_. >> >> ·Environment context >> >> -JGroups version : 2.12.1.Final >> >> -11 nodes >> >> -Tested environment : Ability to split and isolate the network into 2 >> sub networks >> >> oSub network A of 3 nodes >> >> oSub network B of 8 nodes >> >> -JGroups configuration using TCPPING -> see attached file >> >> ·Issue : Nodes not determining the same merge leader when merging 2 clusters >> >> ·Problem analysis : >> >> MERGE2 triggers a scheduled task with a fixed delay to discover new >> groups in regular basis. It sends an event 'FIND_ALL_VIEWS' down from >> the protocol stack. It is handled by TCPPING which is responsible to >> build and send a PING to all initial hosts set in jgroups configuration >> files. PING is a 'GET_MBRS_REQ' message to discover new groups. As it is >> implemented in JGroups 2.12.1 and as it is shown below in >> "Discovery.java" class, the 'GET_MBRS_REQ' message is handled by the >> distant "initial hosts" only if the message is coming from a member in >> different view. Otherwise, the message is discarded. >> >> public Object up(Event evt) { >> >> switch(evt.getType()) { >> >> case Event.MSG: >> >> . >> >> switch(hdr.type) { >> >> case PingHeader.GET_MBRS_REQ: // return >> Rsp(local_addr, coord) >> >> . >> >> if(return_entire_cache && hdr.view_id == null >> && rank != 0) { >> >> . >> >> } >> >> else { >> >> if(hdr.view_id != null) { >> >> // If the discovery request is >> merge-triggered, and we the ViewId shipped with it >> >> // is the same as ours, we don't >> respond (JGRP-1315). >> >> ViewId my_view_id=view != null? >> view.getViewId() : null; >> >> if(my_view_id != null && >> Util.sameViewId(my_view_id, hdr.view_id)) >> >> return null; >> >> } >> >> . >> >> When the new subgroups discovered is returned back to the MERGE2 >> protocol stack, and if the current node is coordinator, it adds its >> group to the discovered ones to determine the "merge leader". >> >> *private*List<PingData> findAllViews() { >> >> List<PingData> >> retval=(List<PingData>)down_prot.down(*new*Event(Event./FIND_ALL_VIEWS/)); >> >> *if*(retval == *null*) *return*Collections./emptyList/(); >> >> *if*(is_coord&& local_addr!= *null*) { >> >> PingData tmp=*new*PingData(local_addr, view, *true*); >> >> //let's make sure that we add ourself as a coordinator >> >> *if*(!retval.contains(tmp)) >> >> retval.add(tmp); >> >> } >> >> *return*retval; >> >> } >> >> *** The issue *** is that it happens that a non-coordinator node >> triggered the FindSubgroupsTaskin MERGE2 protocol stack when merging >> clusters. The result is that it ends off a different groups discovered >> and different merge leader determined, which may cause merge to fail ! >> >> ·Solution : Fix the regression introduced by JGRP-1315 by responding to >> the GET_MBRS_REQ when the 'GET_MBRS_REQ' message receiver is coordinator. >> >> ·Below is the proposed patch in Discovery.java : >> >> *if*(hdr.view_id!= *null*) { >> >> // If the discovery request is merge-triggered, and we the ViewId >> shipped with it >> >> // is the same as ours, we don't respond (JGRP-1315). >> >> ViewId my_view_id=view!= *null*? >> view.getViewId() : *null*; >> >> - *if*(my_view_id != *null*&& Util./sameViewId/(my_view_id, hdr.view_id)) { >> >> + *if*(my_view_id != *null*&& Util./sameViewId/(my_view_id, hdr.view_id) >> && !Util./isCoordinator/(view, local_addr)) { >> >> log.debug("... Not responding to 'GET_MBRS_REQ' [ping_view_id="+ >> hdr.view_id+ ", my_view_id="+ my_view_id + ", rank="+ rank+ "]"); >> >> *return**null*; >> >> } >> >> } >> >> Many thanks, >> >> Thomas UNG >> >> >> >> ------------------------------------------------------------------------------ >> Check out the vibrant tech community on one of the world's most >> engaging tech sites, Slashdot.org! http://sdm.link/slashdot >> >> >> >> _______________________________________________ >> javagroups-users mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/javagroups-users >> > -- Bela Ban | http://www.jgroups.org ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ javagroups-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/javagroups-users