New in INFO: aof_last_bgrewrite_status

Behaves like rdb_last_bgsave_status -- even down to reporting 'ok' when
no rewrite has been done yet.  (You might want to check that
aof_last_rewrite_time_sec is not -1.)
This commit is contained in:
Saj Goonatilleke 2012-07-17 12:06:53 +10:00
parent a2db8e4801
commit 48553a29e8
3 changed files with 13 additions and 3 deletions

View File

@ -1093,6 +1093,8 @@ void backgroundRewriteDoneHandler(int exitcode, int bysignal) {
server.aof_buf = sdsempty(); server.aof_buf = sdsempty();
} }
server.aof_lastbgrewrite_status = REDIS_OK;
redisLog(REDIS_NOTICE, "Background AOF rewrite finished successfully"); redisLog(REDIS_NOTICE, "Background AOF rewrite finished successfully");
/* Change state from WAIT_REWRITE to ON if needed */ /* Change state from WAIT_REWRITE to ON if needed */
if (server.aof_state == REDIS_AOF_WAIT_REWRITE) if (server.aof_state == REDIS_AOF_WAIT_REWRITE)
@ -1104,9 +1106,13 @@ void backgroundRewriteDoneHandler(int exitcode, int bysignal) {
redisLog(REDIS_VERBOSE, redisLog(REDIS_VERBOSE,
"Background AOF rewrite signal handler took %lldus", ustime()-now); "Background AOF rewrite signal handler took %lldus", ustime()-now);
} else if (!bysignal && exitcode != 0) { } else if (!bysignal && exitcode != 0) {
server.aof_lastbgrewrite_status = REDIS_ERR;
redisLog(REDIS_WARNING, redisLog(REDIS_WARNING,
"Background AOF rewrite terminated with error"); "Background AOF rewrite terminated with error");
} else { } else {
server.aof_lastbgrewrite_status = REDIS_ERR;
redisLog(REDIS_WARNING, redisLog(REDIS_WARNING,
"Background AOF rewrite terminated by signal %d", bysignal); "Background AOF rewrite terminated by signal %d", bysignal);
} }

View File

@ -1114,6 +1114,7 @@ void initServerConfig() {
server.aof_last_fsync = time(NULL); server.aof_last_fsync = time(NULL);
server.aof_rewrite_time_last = -1; server.aof_rewrite_time_last = -1;
server.aof_rewrite_time_start = -1; server.aof_rewrite_time_start = -1;
server.aof_lastbgrewrite_status = REDIS_OK;
server.aof_delayed_fsync = 0; server.aof_delayed_fsync = 0;
server.aof_fd = -1; server.aof_fd = -1;
server.aof_selected_db = -1; /* Make sure the first time will not match */ server.aof_selected_db = -1; /* Make sure the first time will not match */
@ -1957,12 +1958,13 @@ sds genRedisInfoString(char *section) {
"aof_rewrite_in_progress:%d\r\n" "aof_rewrite_in_progress:%d\r\n"
"aof_rewrite_scheduled:%d\r\n" "aof_rewrite_scheduled:%d\r\n"
"aof_last_rewrite_time_sec:%ld\r\n" "aof_last_rewrite_time_sec:%ld\r\n"
"aof_current_rewrite_time_sec:%ld\r\n", "aof_current_rewrite_time_sec:%ld\r\n"
"aof_last_bgrewrite_status:%s\r\n",
server.loading, server.loading,
server.dirty, server.dirty,
server.rdb_child_pid != -1, server.rdb_child_pid != -1,
server.lastsave, server.lastsave,
server.lastbgsave_status == REDIS_OK ? "ok" : "err", (server.lastbgsave_status == REDIS_OK) ? "ok" : "err",
server.rdb_save_time_last, server.rdb_save_time_last,
(server.rdb_child_pid == -1) ? (server.rdb_child_pid == -1) ?
-1 : time(NULL)-server.rdb_save_time_start, -1 : time(NULL)-server.rdb_save_time_start,
@ -1971,7 +1973,8 @@ sds genRedisInfoString(char *section) {
server.aof_rewrite_scheduled, server.aof_rewrite_scheduled,
server.aof_rewrite_time_last, server.aof_rewrite_time_last,
(server.aof_child_pid == -1) ? (server.aof_child_pid == -1) ?
-1 : time(NULL)-server.aof_rewrite_time_start); -1 : time(NULL)-server.aof_rewrite_time_start,
(server.aof_lastbgrewrite_status == REDIS_OK) ? "ok" : "err");
if (server.aof_state != REDIS_AOF_OFF) { if (server.aof_state != REDIS_AOF_OFF) {
info = sdscatprintf(info, info = sdscatprintf(info,

View File

@ -644,6 +644,7 @@ struct redisServer {
time_t aof_last_fsync; /* UNIX time of last fsync() */ time_t aof_last_fsync; /* UNIX time of last fsync() */
time_t aof_rewrite_time_last; /* Time used by last AOF rewrite run. */ time_t aof_rewrite_time_last; /* Time used by last AOF rewrite run. */
time_t aof_rewrite_time_start; /* Current AOF rewrite start time. */ time_t aof_rewrite_time_start; /* Current AOF rewrite start time. */
int aof_lastbgrewrite_status; /* REDIS_OK or REDIS_ERR */
unsigned long aof_delayed_fsync; /* delayed AOF fsync() counter */ unsigned long aof_delayed_fsync; /* delayed AOF fsync() counter */
/* RDB persistence */ /* RDB persistence */
long long dirty; /* Changes to DB from the last save */ long long dirty; /* Changes to DB from the last save */