From e150ec7d0c83d56f81496084b2e5f119c958ab6f Mon Sep 17 00:00:00 2001 From: antirez Date: Wed, 19 Mar 2014 12:55:49 +0100 Subject: [PATCH] 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. --- src/config.c | 10 +--------- src/redis.c | 38 +++++++++++++++++++++++--------------- src/redis.h | 3 ++- 3 files changed, 26 insertions(+), 25 deletions(-) diff --git a/src/config.c b/src/config.c index c64c4a9f..0d168c03 100644 --- a/src/config.c +++ b/src/config.c @@ -1807,15 +1807,7 @@ void configCommand(redisClient *c) { configGetCommand(c); } else if (!strcasecmp(c->argv[1]->ptr,"resetstat")) { if (c->argc != 2) goto badarity; - server.stat_keyspace_hits = 0; - 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; + resetServerStats(); resetCommandTableStats(); addReply(c,shared.ok); } else if (!strcasecmp(c->argv[1]->ptr,"rewrite")) { diff --git a/src/redis.c b/src/redis.c index c24828c0..da70266c 100644 --- a/src/redis.c +++ b/src/redis.c @@ -1590,6 +1590,27 @@ int listenToPort(int port, int *fds, int *count) { 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() { int j; @@ -1665,23 +1686,10 @@ void initServer() { server.rdb_save_time_last = -1; server.rdb_save_time_start = -1; server.dirty = 0; - server.stat_numcommands = 0; - server.stat_numconnections = 0; - server.stat_expiredkeys = 0; - server.stat_evictedkeys = 0; + resetServerStats(); + /* A few stats we don't want to reset: server startup time, and peak mem. */ server.stat_starttime = time(NULL); - server.stat_keyspace_misses = 0; - server.stat_keyspace_hits = 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.aof_last_write_status = REDIS_OK; server.aof_last_write_errno = 0; diff --git a/src/redis.h b/src/redis.h index e92db52b..85ca3eac 100644 --- a/src/redis.h +++ b/src/redis.h @@ -1154,7 +1154,8 @@ void populateCommandTable(void); void resetCommandTableStats(void); void adjustOpenFilesLimit(void); void closeListeningSockets(int unlink_unix_socket); -void updateCachedTime(); +void updateCachedTime(void); +void resetServerStats(void); /* Set data type */ robj *setTypeCreate(robj *value);