From e3b71a1c026078b2bef2bcae53615b02fc8847b9 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 3e8804e8..c388aaee 100644 --- a/src/config.c +++ b/src/config.c @@ -1760,15 +1760,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 5560c3c1..36304907 100644 --- a/src/redis.c +++ b/src/redis.c @@ -1516,6 +1516,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; @@ -1588,23 +1609,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 da01d75e..9fb67a82 100644 --- a/src/redis.h +++ b/src/redis.h @@ -1102,7 +1102,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); -- GitLab