Hi,

There were many discussions about this ifdown/ifup and we know that corosync
rrp does not work well with ifdown/ifup. Most cases corosync-cfgtool -r does
not resolve it. I found the main cause of this issue, that is multicast
membership.

My rrp_mode is passive. When I do ifdown/ifup, I found that FAULTY was
always set only from passive_mcast_recv(). By looking the actual traffic,
the token is received OK, but no multicast message on the interface I did
ifdown/ifup. The corosync-cfgtool -r does not help at all. What I found was
the socket itself survives, but the multicast membership is lost across
ifdown/ifup.

I resolved this issue by adding totemnet_iface_check(net_handlers[i]) if the
interface is FAULTY in totemrrp_ring_reenable(). This call will close
current sockets, create new sockets and rejoin to the multicast. Actually it
does have to close old sockets and create new one, but that is the only
function exposed to totemrrp, so I just use it to recover multicast
membership. It will be good to have like multicast_join()/multicast_leave()
functions, then just need to call

multicast_leave();
multicast_join();

This will resolve ifdown/ifup issue manual way. I still think this issue can
be recovered automatically by using netif_check timer.

Thanks
hj
_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to