[jboss-jira] [JBoss JIRA] Resolved: (JGRP-380) MERGE3 can be left in an inconsistent state

Bela Ban (JIRA) jira-events at jboss.com
Wed Dec 13 09:04:39 EST 2006


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

Bela Ban resolved JGRP-380.
---------------------------

    Resolution: Done

done, applied to the 2.4 branch. This will be part of 2.4.1 and 2.5 (ported to 2.5 as well)

> MERGE3 can be left in an inconsistent state
> -------------------------------------------
>
>                 Key: JGRP-380
>                 URL: http://jira.jboss.com/jira/browse/JGRP-380
>             Project: JGroups
>          Issue Type: Bug
>    Affects Versions: 2.4
>            Reporter: Vincent Hartsteen
>         Assigned To: Bela Ban
>             Fix For: 2.4.1
>
>
> MERGE3 can be left in an inconsistent state when it initiates a VIEW_CHANGE in case more than 1 coordinator is found on the network but when that VIEW_CHANGE is cancelled lateron in the stack. This leaves the node thinking it is a coordinator (is_coord remains true) but its announcements is not preloaded with its own address.
> The suggested fix is to add the local address of the node to the list of announcements right after the announcements list is cleared.
>     void processAnnouncements() {
>         if(announcements.size() > 1) {
>             Vector coords=new Vector(announcements);  // create a clone
>             if(coords.size() > 1) {
>                 if(log.isDebugEnabled())
>                     log.debug("passing up MERGE event, coords=" + coords);
>                 final Event evt=new Event(Event.MERGE, coords);
>                 if(use_separate_thread) {
>                     Thread merge_notifier=new Thread(Util.getGlobalThreadGroup(), "merge notifier thread") {
>                         public void run() {
>                             passUp(evt);
>                         }
>                     };
>                     merge_notifier.setDaemon(true);
>                     merge_notifier.start();
>                 }
>                 else {
>                     passUp(evt);
>                 }
>             }
>             announcements.clear();
>             announcements.add(local_addr);   // ***** POSSIBLE FIX  *****
>         }
>     }

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