Jason, > Hi All,
During code study, I have a question about the downlist selection algorithm in cpg. What is the driving factor of this global downlist selection algorithm? Why not simply use downlist respectively? for example, lets say after two clusters {A,B} and {C,D} are both splited, node A and node C trying to merge a new cluster {A,C}. In this situation, if both A and C choose downlist respectivel, thus, node A chooses downlist {B}, node C chooses downlist {D}, then, both A and C can remove left members info correctly. But if node C chooses downlist sent from node A(as the current downlist selection algorithm), it will not remove the left member(node D for this example) until it calls joinlist_remove_zombie_pi_entries() which seems is not really for this purpose, right? Please help to understand this algorithm, your help will be appreciate!
Honestly, probably nobody understands this algorithm. It is overcomplicated. Main idea was to have same membership change on every node... sadly it is simply impossible to achieve (node A and B creates membership. Which view (node A sees node B as joining, node B sees node A as joining) is right?). There is kind of heuristics, but ... as you said, at the end of the day, joinlist_remove_zombie_pi_entries is the one who creates real membership.
Complete removal of downlist and use only joinlist is one of top priority TODO tasks for 3.0. But for now, everything work as it should, so it's better to not to touch it (golden rule of engineering ;) )
Regards, Honza _______________________________________________ discuss mailing list discuss@xxxxxxxxxxxx http://lists.corosync.org/mailman/listinfo/discuss