mirror of
https://github.com/fluencelabs/redis
synced 2025-03-21 01:50:50 +00:00
PSYNC: More robust handling of unexpected reply to PSYNC.
This commit is contained in:
parent
7404b95833
commit
0e1be5347b
@ -956,6 +956,14 @@ int slaveTryPartialResynchronization(int fd) {
|
|||||||
if (!runid || !offset || (offset-runid-1) != REDIS_RUN_ID_SIZE) {
|
if (!runid || !offset || (offset-runid-1) != REDIS_RUN_ID_SIZE) {
|
||||||
redisLog(REDIS_WARNING,
|
redisLog(REDIS_WARNING,
|
||||||
"Master replied with wrong +FULLRESYNC syntax.");
|
"Master replied with wrong +FULLRESYNC syntax.");
|
||||||
|
sdsfree(reply);
|
||||||
|
/* This is an unexpected condition, actually the +FULLRESYNC
|
||||||
|
* reply means that the master supports PSYNC, but the reply
|
||||||
|
* format seems wrong. To stay safe we blank the master
|
||||||
|
* runid to make sure next PSYNCs will fail, and return
|
||||||
|
* NOT_SUPPORTED to the caller to use SYNC instead. */
|
||||||
|
memset(server.repl_master_runid,0,REDIS_RUN_ID_SIZE+1);
|
||||||
|
return PSYNC_NOT_SUPPORTED;
|
||||||
} else {
|
} else {
|
||||||
memcpy(server.repl_master_runid, runid, offset-runid-1);
|
memcpy(server.repl_master_runid, runid, offset-runid-1);
|
||||||
server.repl_master_runid[REDIS_RUN_ID_SIZE] = '\0';
|
server.repl_master_runid[REDIS_RUN_ID_SIZE] = '\0';
|
||||||
|
Loading…
x
Reference in New Issue
Block a user