void shutdownCommand(client *c) { int flags = 0; if (c->argc > 2) { addReply(c,shared.syntaxerr); return; } else if (c->argc == 2) { if (!strcasecmp(c->argv[1]->ptr,"nosave")) { flags |= SHUTDOWN_NOSAVE; } else if (!strcasecmp(c->argv[1]->ptr,"save")) { flags |= SHUTDOWN_SAVE; } else { addReply(c,shared.syntaxerr); return; } } /* When SHUTDOWN is called while the server is loading a dataset in * memory we need to make sure no attempt is performed to save * the dataset on shutdown (otherwise it could overwrite the current DB * with half-read data). * * Also when in Sentinel mode clear the SAVE flag and force NOSAVE. */ if (server.loading || server.sentinel_mode) flags = (flags & ~SHUTDOWN_SAVE) | SHUTDOWN_NOSAVE; if (prepareForShutdown(flags) == C_OK) exit(0); addReplyError(c,"Errors trying to SHUTDOWN. Check logs."); }
void purgeCommand(redisClient *c) { uint32 check_purge_usleep = 10000; // 10ms while (!checkPurge()) { redisLog(REDIS_WARNING, "Check PURGE on SLAVE failed, sleeping: %dus", check_purge_usleep); usleep(check_purge_usleep); } addReply(c, shared.ok); aeProcessEvents(server.el, AE_ALL_EVENTS); if (prepareForShutdown() == REDIS_OK) exit(0); }
static int initializeCron (struct aeEventLoop *eventLoop, long long id, void *clientData) { if (server.shutdown_asap) { if (prepareForShutdown (REDIS_SHUTDOWN_NOSAVE) == REDIS_OK) exit (0); redisLog (REDIS_WARNING, "SIGTERM received but errors trying to shut down the server, check the logs for more information"); } return 1000 / server.hz; }
static void processSmrCallback (aeEventLoop * el, int fd, void *privdata, int mask) { int ret; ret = smr_process (server.smr_conn); if (ret == -1) { redisLog (REDIS_NOTICE, "SMR Replicator unreachable, smr_process retcode:%d, errno:%d, last_seqnum:%lld", ret, errno, server.smr_seqnum); if (prepareForShutdown (0) == REDIS_OK) exit (0); redisLog (REDIS_WARNING, "SMR Replicator closed, but errors trying to shut down the server, check the logs for more information"); exit (0); } }
void shutdownCommand(redisClient *c) { int flags = 0; if (c->argc > 2) { addReply(c,shared.syntaxerr); return; } else if (c->argc == 2) { if (!strcasecmp(c->argv[1]->ptr,"nosave")) { flags |= REDIS_SHUTDOWN_NOSAVE; } else if (!strcasecmp(c->argv[1]->ptr,"save")) { flags |= REDIS_SHUTDOWN_SAVE; } else { addReply(c,shared.syntaxerr); return; } } if (prepareForShutdown(flags) == REDIS_OK) exit(0); addReplyError(c,"Errors trying to SHUTDOWN. Check logs."); }
void shutdownCommand(redisClient *c) { if (prepareForShutdown() == REDIS_OK) exit(0); addReplyError(c,"Errors trying to SHUTDOWN. Check logs."); }
void shutdownCommand(redisClient *c) { if (prepareForShutdown() == REDIS_OK) exit(0); addReplySds(c, sdsnew("-ERR Errors trying to SHUTDOWN. Check logs.\r\n")); }