summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/replication.c15
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