summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2014-12-23 14:52:57 +0100
committerantirez <antirez@gmail.com>2014-12-23 14:54:34 +0100
commit840435ad0be252094b118af428590ba45ba1cec2 (patch)
tree8c33823f90053a9815948b8cba3d0aa0ad442d87 /src
parent5888290d260cd60aedcd695c8625eadb6f2c349e (diff)
downloadredis-840435ad0be252094b118af428590ba45ba1cec2.tar.gz
INFO loading stats: three fixes.
1. Server unxtime may remain not updated while loading AOF, so ETA is not updated correctly. 2. Number of processed byte was not initialized. 3. Possible division by zero condition (likely cause of issue #1932).
Diffstat (limited to 'src')
-rw-r--r--src/rdb.c3
-rw-r--r--src/redis.c6
2 files changed, 5 insertions, 4 deletions
diff --git a/src/rdb.c b/src/rdb.c
index b98948b78..3dd69f289 100644
--- a/src/rdb.c
+++ b/src/rdb.c
@@ -1087,8 +1087,9 @@ void startLoading(FILE *fp) {
/* Load the DB */
server.loading = 1;
server.loading_start_time = time(NULL);
+ server.loading_loaded_bytes = 0;
if (fstat(fileno(fp), &sb) == -1) {
- server.loading_total_bytes = 1; /* just to avoid division by zero */
+ server.loading_total_bytes = 0;
} else {
server.loading_total_bytes = sb.st_size;
}
diff --git a/src/redis.c b/src/redis.c
index e38f9247a..d68065512 100644
--- a/src/redis.c
+++ b/src/redis.c
@@ -2804,14 +2804,14 @@ sds genRedisInfoString(char *section) {
server.loading_loaded_bytes;
perc = ((double)server.loading_loaded_bytes /
- server.loading_total_bytes) * 100;
+ (server.loading_total_bytes+1)) * 100;
- elapsed = server.unixtime-server.loading_start_time;
+ elapsed = time(NULL)-server.loading_start_time;
if (elapsed == 0) {
eta = 1; /* A fake 1 second figure if we don't have
enough info */
} else {
- eta = (elapsed*remaining_bytes)/server.loading_loaded_bytes;
+ eta = (elapsed*remaining_bytes)/(server.loading_loaded_bytes+1);
}
info = sdscatprintf(info,