Merge pull request #7032 from soloestoy/psync2-meaningful-offset-bugfix

PSYNC2: reset backlog_idx and master_repl_offset correctly
This commit is contained in:
Salvatore Sanfilippo 2020-03-28 14:52:11 +01:00 committed by GitHub
commit e8afadd52c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2754,11 +2754,16 @@ void replicationCacheMasterUsingMyself(void) {
server.master_repl_offset, server.master_repl_offset,
delta); delta);
server.master_initial_offset = server.master_repl_meaningful_offset; server.master_initial_offset = server.master_repl_meaningful_offset;
server.repl_backlog_histlen -= delta; server.master_repl_offset = server.master_repl_meaningful_offset;
server.repl_backlog_idx = if (server.repl_backlog_histlen <= delta) {
(server.repl_backlog_idx + (server.repl_backlog_size - delta)) % server.repl_backlog_histlen = 0;
server.repl_backlog_size; server.repl_backlog_idx = 0;
if (server.repl_backlog_histlen < 0) server.repl_backlog_histlen = 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 /* The master client we create can be set to any DBID, because