Sentinel: test for writable config file.

This commit introduces a funciton called when Sentinel is ready for
normal operations to avoid putting Sentinel specific stuff in redis.c.
This commit is contained in:
antirez 2013-11-21 12:27:14 +01:00
parent d920177f8d
commit 297de1ab26
3 changed files with 14 additions and 2 deletions

View File

@ -3109,7 +3109,7 @@ int main(int argc, char **argv) {
if (server.sofd > 0)
redisLog(REDIS_NOTICE,"The server is now ready to accept connections at %s", server.unixsocket);
} else {
redisLog(REDIS_WARNING,"Sentinel runid is %s", server.runid);
sentinelIsRunning();
}
/* Warning the user about suspicious maxmemory setting. */

View File

@ -1223,6 +1223,7 @@ void initSentinelConfig(void);
void initSentinel(void);
void sentinelTimer(void);
char *sentinelHandleConfiguration(char **argv, int argc);
void sentinelIsRunning(void);
/* Scripting */
void scriptingInit(void);

View File

@ -413,6 +413,17 @@ void initSentinel(void) {
sentinel.scripts_queue = listCreate();
}
/* This function gets called when the server is in Sentinel mode, started,
* loaded the configuration, and is ready for normal operations. */
void sentinelIsRunning(void) {
redisLog(REDIS_WARNING,"Sentinel runid is %s", server.runid);
if (server.configfile == NULL || access(server.configfile,W_OK) == -1) {
redisLog(REDIS_WARNING,"Sentinel started without a config file, or config file not writable. Exiting...");
exit(1);
}
}
/* ============================== sentinelAddr ============================== */
/* Create a sentinelAddr object and return it on success.
@ -2069,7 +2080,7 @@ int sentinelSendHello(sentinelRedisInstance *ri) {
/* Try to obtain our own IP address. */
if (anetSockName(ri->cc->c.fd,ip,sizeof(ip),NULL) == -1) return REDIS_ERR;
if (ri->flags & SRI_DISCONNECTED) return;
if (ri->flags & SRI_DISCONNECTED) return REDIS_ERR;
/* Format and send the Hello message. */
snprintf(payload,sizeof(payload),