diff options
author | zhaozhao.zz <zhaozhao.zz@alibaba-inc.com> | 2017-11-22 12:05:30 +0800 |
---|---|---|
committer | zhaozhao.zz <zhaozhao.zz@alibaba-inc.com> | 2017-11-22 12:05:34 +0800 |
commit | 93037f764209e86f3fcb240a642334fd67552935 (patch) | |
tree | 19651c440ecc246287694ae97c3d517dce5d6792 | |
parent | b8579c225cd0ea83222938bb188cd74501fb1627 (diff) | |
download | redis-93037f764209e86f3fcb240a642334fd67552935.tar.gz |
PSYNC2: make repl_stream_db never be -1
it means that after this change all the replication
info in RDB is valid, and it can distinguish us from
the older version.
-rw-r--r-- | src/rdb.c | 15 |
1 files changed, 6 insertions, 9 deletions
@@ -2045,15 +2045,12 @@ rdbSaveInfo *rdbPopulateSaveInfo(rdbSaveInfo *rsi) { * scenario which can make repl_stream_db be -1, that is the instance is * a master, and it have repl_backlog, but server.slaveseldb is -1. */ if (!server.masterhost && server.repl_backlog) { - rsi->repl_stream_db = server.slaveseldb; - /* Note that server.slaveseldb may be -1, it means that this master - * didn't apply any write commands after a full synchronization, - * so we can leave the currently selected DB set to -1, because the - * next write command must generate a SELECT statement. This allows - * a restarted slave to reload replication ID/offset even the repl_stream_db - * is -1, but we should not do that, because older implementations - * may save a repl_stream_db as -1 in a wrong way. Maybe we can fix - * it in the next release version. */ + rsi->repl_stream_db = server.slaveseldb == -1 ? 0 : server.slaveseldb; + /* Note that when server.slaveseldb is -1, it means that this master + * didn't apply any write commands after a full synchronization. + * So we can let repl_stream_db be 0, this allows a restarted slave + * to reload replication ID/offset, it's safe because the next write + * command must generate a SELECT statement. */ return rsi; } |