diff options
author | zhaozhao.zz <zhaozhao.zz@alibaba-inc.com> | 2020-05-25 11:17:51 +0800 |
---|---|---|
committer | zhaozhao.zz <zhaozhao.zz@alibaba-inc.com> | 2020-05-25 11:17:54 +0800 |
commit | eec769be59d2100748bbb45a0e97e7834f490d4a (patch) | |
tree | 4fc41e88d78209ebd0cfc07d63c686a4a792cabb | |
parent | b89e6d74faa27c9edf9d5e867a408b6b5c39b05e (diff) | |
download | redis-eec769be59d2100748bbb45a0e97e7834f490d4a.tar.gz |
PSYNC2: second_replid_offset should be real meaningful offset
After adjustMeaningfulReplOffset(), all the other related variable
should be updated, including server.second_replid_offset.
Or the old version redis like 5.0 may receive wrong data from
replication stream, cause redis 5.0 can sync with redis 6.0,
but doesn't know meaningful offset.
-rw-r--r-- | src/replication.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/replication.c b/src/replication.c index e1c65d48b..d45a15783 100644 --- a/src/replication.c +++ b/src/replication.c @@ -2531,14 +2531,14 @@ void replicationUnsetMaster(void) { sdsfree(server.masterhost); server.masterhost = NULL; + if (server.master) freeClient(server.master); + replicationDiscardCachedMaster(); + cancelReplicationHandshake(); /* When a slave is turned into a master, the current replication ID * (that was inherited from the master at synchronization time) is * used as secondary ID up to the current offset, and a new replication * ID is created to continue with a new replication history. */ shiftReplicationId(); - if (server.master) freeClient(server.master); - replicationDiscardCachedMaster(); - cancelReplicationHandshake(); /* Disconnecting all the slaves is required: we need to inform slaves * of the replication ID change (see shiftReplicationId() call). However * the slaves will be able to partially resync with us, so it will be |