diff options
author | antirez <antirez@gmail.com> | 2013-12-11 15:23:10 +0100 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2013-12-11 15:24:50 +0100 |
commit | 9a8ae5a553ddf1ca3866104f12ba428c9fd0431c (patch) | |
tree | a3f0de13b7454372178cb184b0e2b6aaf09ed203 | |
parent | 0ff078d8d07c98f7c38af8858b4ec29c5623e7b2 (diff) | |
download | redis-9a8ae5a553ddf1ca3866104f12ba428c9fd0431c.tar.gz |
Replication: publish the slave_repl_offset when disconnected from master.
When a slave was disconnected from its master the replication offset was
reported as -1. Now it is reported as the replication offset of the
previous master, so that failover can be performed using this value in
order to try to select a slave with more processed data from a set of
slaves of the old master.
-rw-r--r-- | src/redis.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/redis.c b/src/redis.c index a8ece8197..b8e0f8f5c 100644 --- a/src/redis.c +++ b/src/redis.c @@ -2416,6 +2416,13 @@ sds genRedisInfoString(char *section) { "role:%s\r\n", server.masterhost == NULL ? "master" : "slave"); if (server.masterhost) { + long long slave_repl_offset = 1; + + if (server.master) + slave_repl_offset = server.master->reploff; + else if (server.cached_master) + slave_repl_offset = server.cached_master->reploff; + info = sdscatprintf(info, "master_host:%s\r\n" "master_port:%d\r\n" @@ -2430,7 +2437,7 @@ sds genRedisInfoString(char *section) { server.master ? ((int)(server.unixtime-server.master->lastinteraction)) : -1, server.repl_state == REDIS_REPL_TRANSFER, - server.master ? server.master->reploff : -1 + slave_repl_offset ); if (server.repl_state == REDIS_REPL_TRANSFER) { |