diff options
author | Salvatore Sanfilippo <antirez@gmail.com> | 2020-03-28 14:52:11 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-28 14:52:11 +0100 |
commit | e8afadd52c32c656d56ea9d5b235881f04c9bd8a (patch) | |
tree | 5a2ec93b5cb2954f36241ba5efa54607aa598819 | |
parent | 97f1c808ce522113935bad244a9505a87ba27f9e (diff) | |
parent | 36ee294e83e2c1e9d8f3ec04de3b6c734185f699 (diff) | |
download | redis-e8afadd52c32c656d56ea9d5b235881f04c9bd8a.tar.gz |
Merge pull request #7032 from soloestoy/psync2-meaningful-offset-bugfix
PSYNC2: reset backlog_idx and master_repl_offset correctly
-rw-r--r-- | src/replication.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/replication.c b/src/replication.c index 20f9a2129..3e9910374 100644 --- a/src/replication.c +++ b/src/replication.c @@ -2754,11 +2754,16 @@ void replicationCacheMasterUsingMyself(void) { server.master_repl_offset, delta); server.master_initial_offset = server.master_repl_meaningful_offset; - server.repl_backlog_histlen -= delta; - server.repl_backlog_idx = - (server.repl_backlog_idx + (server.repl_backlog_size - delta)) % - server.repl_backlog_size; - if (server.repl_backlog_histlen < 0) server.repl_backlog_histlen = 0; + server.master_repl_offset = server.master_repl_meaningful_offset; + if (server.repl_backlog_histlen <= delta) { + server.repl_backlog_histlen = 0; + server.repl_backlog_idx = 0; + } else { + server.repl_backlog_histlen -= delta; + server.repl_backlog_idx = + (server.repl_backlog_idx + (server.repl_backlog_size - delta)) % + server.repl_backlog_size; + } } /* The master client we create can be set to any DBID, because |