From 4028a777b67a77bf43da6a192784810ef5909be1 Mon Sep 17 00:00:00 2001 From: antirez Date: Tue, 30 Apr 2013 15:08:22 +0200 Subject: [PATCH] Sentinel: more sensible delay in master demote after tilt. --- src/sentinel.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/sentinel.c b/src/sentinel.c index 959f26e3..2711ca30 100644 --- a/src/sentinel.c +++ b/src/sentinel.c @@ -1481,18 +1481,20 @@ void sentinelRefreshInstanceInfo(sentinelRedisInstance *ri, const char *info) { if (ri->flags & SRI_DEMOTE) { /* If this sentinel was partitioned from the slave's master, * or tilted recently, wait some time before to act, - * so that DOWN and roles info will be refreshed. */ - if (!sentinelRedisInstanceNoDownFor(ri->master, - SENTINEL_INFO_PERIOD*2)) - return; - if (mstime()-sentinel.tilt_start_time < - SENTINEL_TILT_PERIOD+ri->master->down_after_period*2) + * so that DOWN and roles INFO will be refreshed. */ + mstime_t wait_time = SENTINEL_INFO_PERIOD*2 + + ri->master->down_after_period*2; + + if (!sentinelRedisInstanceNoDownFor(ri->master,wait_time) || + (mstime()-sentinel.tilt_start_time) < wait_time) return; - /* Old master returned back? Turn it into a slave ASAP if: + /* Old master returned back? Turn it into a slave ASAP if + * we can reach what we believe is the new master now, and + * have a recent role information for it. * - * We'll clear this flag only when we have the acknowledge - * that it's a slave again. */ + * Note: we'll clear the DEMOTE flag only when we have the + * acknowledge that it's a slave again. */ if (ri->master->flags & SRI_MASTER && (ri->master->flags & (SRI_S_DOWN|SRI_O_DOWN)) == 0 && (mstime() - ri->master->info_refresh) < SENTINEL_INFO_PERIOD*2) -- GitLab