After the representative of the new ring entered into RECOVERY state, it was waiting for the commit_token on the second rotation. But when it got a new commit_token, it didn't check the status of this token which could be retransmitted by upstream node on the first rotation, and then the representative node would send the initial ORF token prematurely. Signed-off-by: Yunkai Zhang <qiushu.zyk@xxxxxxxxxx> --- exec/totemsrp.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/exec/totemsrp.c b/exec/totemsrp.c index 5a78962..7a4be95 100644 --- a/exec/totemsrp.c +++ b/exec/totemsrp.c @@ -4372,7 +4372,9 @@ static int message_handler_memb_commit_token ( break; case MEMB_STATE_RECOVERY: - if (totemip_equal (&instance->my_id.addr[0], &instance->my_ring_id.rep)) { + if (totemip_equal (&instance->my_id.addr[0], &instance->my_ring_id.rep) && + memb_commit_token->ring_id.seq == instance->my_ring_id.seq && + memb_commit_token->token_seq == 2*memb_commit_token->addr_entries) { log_printf (instance->totemsrp_log_level_debug, "Sending initial ORF token\n"); -- 1.7.7.3 _______________________________________________ discuss mailing list discuss@xxxxxxxxxxxx http://lists.corosync.org/mailman/listinfo/discuss