Hi, Steven, Could you take a look at this patch?
This bug is when using UDPU and RRP active, the two rings are supposed to be working correctly, transmitting the same messages, but in fact, the second ring has not been working from the beginning at all. It is always the first ring is working and the user doesn't know of this! So, the scenario is: the user is happy to see two rings are providing him the network redundancy, if ring 1 is down, oh he is lucky, but if ring 0 is down, he noticed that both rings don't work, and it has not provided him the network redundancy which he has always thought it has. When this bug happens, it will also result in Corosync coredump at assert (token_memb_entries >= 1); Thanks for your time for reviewing this patch;) Thanks, Jiaju On Thu, Jun 9, 2011 at 7:59 AM, Jiaju Zhang <[email protected]> wrote: > Redundant ring has some problem in the UDP unicast mode. The problem > is the second ring has not been successfully initialized, that is, the > second time iface_changes happens, the member list for that interface > has not been added, which results in that ring cannot transmit normal > message. So the second ring cannot take over the work if the first > ring is down. This patch fixes this issue. > > Signed-off-by: Jiaju Zhang <[email protected]> > --- > exec/totemsrp.c | 12 +++++++----- > 1 files changed, 7 insertions(+), 5 deletions(-) > > diff --git a/exec/totemsrp.c b/exec/totemsrp.c > index 9f7f434..678fa64 100644 > --- a/exec/totemsrp.c > +++ b/exec/totemsrp.c > @@ -4421,17 +4421,19 @@ void main_iface_change_fn ( > "Created or loaded sequence id %lld.%s for this > ring.\n", > instance->my_ring_id.seq, > totemip_print (&instance->my_ring_id.rep)); > - for (i = 0; i < > instance->totem_config->interfaces[iface_no].member_count; i++) { > - totemsrp_member_add (instance, > - > &instance->totem_config->interfaces[iface_no].member_list[i], > - iface_no); > > - } > if (instance->totemsrp_service_ready_fn) { > instance->totemsrp_service_ready_fn (); > } > > } > + > + for (i = 0; i < > instance->totem_config->interfaces[iface_no].member_count; i++) { > + totemsrp_member_add (instance, > + > &instance->totem_config->interfaces[iface_no].member_list[i], > + iface_no); > + } > + > if (instance->iface_changes >= > instance->totem_config->interface_count) { > memb_state_gather_enter (instance, 15); > } > _______________________________________________ Openais mailing list [email protected] https://lists.linux-foundation.org/mailman/listinfo/openais
