1
0
mirror of https://github.com/fluencelabs/redis synced 2025-03-18 00:20:50 +00:00

Sentinel: generate +monitor events at startup.

This commit is contained in:
antirez 2014-02-24 16:32:09 +01:00
parent 3b7a757468
commit 6b373edb77

@ -327,6 +327,7 @@ void sentinelDiscardReplyCallback(redisAsyncContext *c, void *reply, void *privd
int sentinelSendSlaveOf(sentinelRedisInstance *ri, char *host, int port); int sentinelSendSlaveOf(sentinelRedisInstance *ri, char *host, int port);
char *sentinelVoteLeader(sentinelRedisInstance *master, uint64_t req_epoch, char *req_runid, uint64_t *leader_epoch); char *sentinelVoteLeader(sentinelRedisInstance *master, uint64_t req_epoch, char *req_runid, uint64_t *leader_epoch);
void sentinelFlushConfig(void); void sentinelFlushConfig(void);
void sentinelGenerateInitialMonitorEvents(void);
/* ========================= Dictionary types =============================== */ /* ========================= Dictionary types =============================== */
@ -427,6 +428,10 @@ void sentinelIsRunning(void) {
server.configfile,strerror(errno)); server.configfile,strerror(errno));
exit(1); exit(1);
} }
/* We want to generate a +monitor event for every configured master
* at startup. */
sentinelGenerateInitialMonitorEvents();
} }
/* ============================== sentinelAddr ============================== */ /* ============================== sentinelAddr ============================== */
@ -558,6 +563,22 @@ void sentinelEvent(int level, char *type, sentinelRedisInstance *ri,
} }
} }
/* This function is called only at startup and is used to generate a
* +monitor event for every configured master. The same events are also
* generated when a master to monitor is added at runtime via the
* SENTINEL MONITOR command. */
void sentinelGenerateInitialMonitorEvents(void) {
dictIterator *di;
dictEntry *de;
di = dictGetIterator(sentinel.masters);
while((de = dictNext(di)) != NULL) {
sentinelRedisInstance *ri = dictGetVal(de);
sentinelEvent(REDIS_WARNING,"+monitor",ri,"%@");
}
dictReleaseIterator(di);
}
/* ============================ script execution ============================ */ /* ============================ script execution ============================ */
/* Release a script job structure and all the associated data. */ /* Release a script job structure and all the associated data. */