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
[email protected]
http://lists.corosync.org/mailman/listinfo/discuss