Unify stats reset for CONFIG RESETSTAT / initServer().

Now CONFIG RESETSTAT makes sure to reset all the fields, and in the
future it will be simpler to avoid missing new fields.
This commit is contained in:
antirez 2014-03-19 12:55:49 +01:00
parent b9e90a70fa
commit e150ec7d0c
3 changed files with 26 additions and 25 deletions

View File

@ -1807,15 +1807,7 @@ void configCommand(redisClient *c) {
configGetCommand(c); configGetCommand(c);
} else if (!strcasecmp(c->argv[1]->ptr,"resetstat")) { } else if (!strcasecmp(c->argv[1]->ptr,"resetstat")) {
if (c->argc != 2) goto badarity; if (c->argc != 2) goto badarity;
server.stat_keyspace_hits = 0; resetServerStats();
server.stat_keyspace_misses = 0;
server.stat_numcommands = 0;
server.ops_sec_last_sample_ops = 0;
server.stat_numconnections = 0;
server.stat_expiredkeys = 0;
server.stat_rejected_conn = 0;
server.stat_fork_time = 0;
server.aof_delayed_fsync = 0;
resetCommandTableStats(); resetCommandTableStats();
addReply(c,shared.ok); addReply(c,shared.ok);
} else if (!strcasecmp(c->argv[1]->ptr,"rewrite")) { } else if (!strcasecmp(c->argv[1]->ptr,"rewrite")) {

View File

@ -1590,6 +1590,27 @@ int listenToPort(int port, int *fds, int *count) {
return REDIS_OK; return REDIS_OK;
} }
/* Resets the stats that we expose via INFO or other means that we want
* to reset via CONFIG RESETSTAT. The function is also used in order to
* initialize these fields in initServer() at server startup. */
void resetServerStats(void) {
server.stat_numcommands = 0;
server.stat_numconnections = 0;
server.stat_expiredkeys = 0;
server.stat_evictedkeys = 0;
server.stat_keyspace_misses = 0;
server.stat_keyspace_hits = 0;
server.stat_fork_time = 0;
server.stat_rejected_conn = 0;
server.stat_sync_full = 0;
server.stat_sync_partial_ok = 0;
server.stat_sync_partial_err = 0;
memset(server.ops_sec_samples,0,sizeof(server.ops_sec_samples));
server.ops_sec_idx = 0;
server.ops_sec_last_sample_time = mstime();
server.ops_sec_last_sample_ops = 0;
}
void initServer() { void initServer() {
int j; int j;
@ -1665,23 +1686,10 @@ void initServer() {
server.rdb_save_time_last = -1; server.rdb_save_time_last = -1;
server.rdb_save_time_start = -1; server.rdb_save_time_start = -1;
server.dirty = 0; server.dirty = 0;
server.stat_numcommands = 0; resetServerStats();
server.stat_numconnections = 0; /* A few stats we don't want to reset: server startup time, and peak mem. */
server.stat_expiredkeys = 0;
server.stat_evictedkeys = 0;
server.stat_starttime = time(NULL); server.stat_starttime = time(NULL);
server.stat_keyspace_misses = 0;
server.stat_keyspace_hits = 0;
server.stat_peak_memory = 0; server.stat_peak_memory = 0;
server.stat_fork_time = 0;
server.stat_rejected_conn = 0;
server.stat_sync_full = 0;
server.stat_sync_partial_ok = 0;
server.stat_sync_partial_err = 0;
memset(server.ops_sec_samples,0,sizeof(server.ops_sec_samples));
server.ops_sec_idx = 0;
server.ops_sec_last_sample_time = mstime();
server.ops_sec_last_sample_ops = 0;
server.lastbgsave_status = REDIS_OK; server.lastbgsave_status = REDIS_OK;
server.aof_last_write_status = REDIS_OK; server.aof_last_write_status = REDIS_OK;
server.aof_last_write_errno = 0; server.aof_last_write_errno = 0;

View File

@ -1154,7 +1154,8 @@ void populateCommandTable(void);
void resetCommandTableStats(void); void resetCommandTableStats(void);
void adjustOpenFilesLimit(void); void adjustOpenFilesLimit(void);
void closeListeningSockets(int unlink_unix_socket); void closeListeningSockets(int unlink_unix_socket);
void updateCachedTime(); void updateCachedTime(void);
void resetServerStats(void);
/* Set data type */ /* Set data type */
robj *setTypeCreate(robj *value); robj *setTypeCreate(robj *value);