Hi

I'm trying to debug a vendor product which uses Apache Tribes as its cluster
communication implementation.  I've identified that each member of the
cluster derives the "master node" instance using the aliveTime field of all
members of the cluster.  The member with the largest aliveTime is elected to
be the master node.

One thing I notice is that local member aliveTime is only updated when
McastService.getLocalMember() is called while (remote) member aliveTime is
updated constantly (by a separate thread?).

Is this observation correct?  If so, does this mean that using aliveTime to
elect a master node might run into race conditions if it wasn't implemented
carefully?

For example, remote member aliveTime is always more up-to-date than the
local member alive time.  Assuming two members of the cluster started almost
at the same time, It's possible that they always think the other member is
alive longer (if the remote aliveTime is updated before local aliveTime)
and, therefore, think the other member is the master node.

Thanks for any clarification on the subject.


eddie

Reply via email to