I have a 2-node cluster, and I wrote a simple program that registers for
cluster events using:
cman_start_notification and cman_start_recv_data. If a node dies (manual
reboot/shutdown) then I receive CMAN_REASON_PORTCLOSED event and then NO
CMAN_REASON_STATECHANGE (as I woudl expect). I receive
CMAN_REASON_STATECHANGE once the node is booted again. If I do not
register for data then I do not receive CMAN_REASON_PORTCLOSED as
expected.
Is the notification mechanism broken?
Mike
P.S.
It also looks like that the conditions in while loop in cman_dispatch
might be incorrect if the intention was to continue forever as long as
there no errors.
while ( flags & CMAN_DISPATCH_ALL &&
(len < 0 && errno == EAGAIN) );
Should it be:
while ( flags & CMAN_DISPATCH_ALL &&
!(len < 0 && errno == EAGAIN) );