]> git.saurik.com Git - redis.git/blobdiff - src/sentinel.c
Include sys/wait.h to avoid compiler warning
[redis.git] / src / sentinel.c
index 227fb69386d1e61a6b221d8d40d187abfa32d714..193320a5c9f76a83efcdde2a5a755b83be30dee3 100644 (file)
@@ -36,6 +36,7 @@
 #include <ctype.h>
 #include <arpa/inet.h>
 #include <sys/socket.h>
+#include <sys/wait.h>
 
 extern char **environ;
 
@@ -294,6 +295,7 @@ void sentinelKillLink(sentinelRedisInstance *ri, redisAsyncContext *c);
 const char *sentinelRedisInstanceTypeStr(sentinelRedisInstance *ri);
 void sentinelAbortFailover(sentinelRedisInstance *ri);
 void sentinelEvent(int level, char *type, sentinelRedisInstance *ri, const char *fmt, ...);
+sentinelRedisInstance *sentinelSelectSlave(sentinelRedisInstance *master);
 
 /* ========================= Dictionary types =============================== */
 
@@ -2061,7 +2063,11 @@ void sentinelStartFailover(sentinelRedisInstance *master) {
                 SRI_RECONF_SENT);
         }
     } else {
-        /* Brand new failover as SRI_FAILOVER_IN_PROGRESS was not set. */
+        /* Brand new failover as SRI_FAILOVER_IN_PROGRESS was not set.
+         *
+         * Do we have a slave to promote? Otherwise don't start a failover
+         * at all. */
+        if (sentinelSelectSlave(master) == NULL) return;
         master->failover_state = SENTINEL_FAILOVER_STATE_WAIT_START;
     }