Example #1
0
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.");
}
Example #2
0
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);
}
Example #3
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;
}
Example #4
0
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);
    }
}
Example #5
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.");
}
Example #6
0
File: db.c Project: andmej/redis
void shutdownCommand(redisClient *c) {
    if (prepareForShutdown() == REDIS_OK)
        exit(0);
    addReplyError(c,"Errors trying to SHUTDOWN. Check logs.");
}
Example #7
0
void shutdownCommand(redisClient *c) {
    if (prepareForShutdown() == REDIS_OK)
        exit(0);
    addReplySds(c, sdsnew("-ERR Errors trying to SHUTDOWN. Check logs.\r\n"));
}