diff options
author | antirez <antirez@gmail.com> | 2020-05-27 12:39:35 +0200 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2020-05-27 12:39:35 +0200 |
commit | 5418c81312b195c3fe49fed2823fd040b490f14b (patch) | |
tree | beb35cd4220aa98735f11ee24c97d720bf73747b | |
parent | 33cbdac1249a7f56dd53b2b5326cfafdb6dbde5f (diff) | |
download | redis-5418c81312b195c3fe49fed2823fd040b490f14b.tar.gz |
Revert "PSYNC2: meaningful offset implemented."
This reverts commit 57fa355e56540a6fab61a5b8ecdda96225815632.
-rw-r--r-- | src/replication.c | 36 | ||||
-rw-r--r-- | src/server.c | 4 | ||||
-rw-r--r-- | src/server.h | 1 |
3 files changed, 1 insertions, 40 deletions
diff --git a/src/replication.c b/src/replication.c index 88351694b..c36192670 100644 --- a/src/replication.c +++ b/src/replication.c @@ -162,7 +162,6 @@ void feedReplicationBacklog(void *ptr, size_t len) { unsigned char *p = ptr; server.master_repl_offset += len; - server.master_repl_meaningful_offset = server.master_repl_offset; /* This is a circular buffer, so write as much data we can at every * iteration and rewind the "idx" index if we reach the limit. */ @@ -1830,7 +1829,6 @@ void readSyncBulkPayload(connection *conn) { * we are starting a new history. */ memcpy(server.replid,server.master->replid,sizeof(server.replid)); server.master_repl_offset = server.master->reploff; - server.master_repl_meaningful_offset = server.master->reploff; clearReplicationId2(); /* Let's create the replication backlog if needed. Slaves need to @@ -2788,37 +2786,12 @@ void replicationCacheMaster(client *c) { * current offset if no data was lost during the failover. So we use our * current replication ID and offset in order to synthesize a cached master. */ void replicationCacheMasterUsingMyself(void) { - serverLog(LL_NOTICE, - "Before turning into a replica, using my own master parameters " - "to synthesize a cached master: I may be able to synchronize with " - "the new master with just a partial transfer."); - /* This will be used to populate the field server.master->reploff * by replicationCreateMasterClient(). We'll later set the created * master as server.cached_master, so the replica will use such * offset for PSYNC. */ server.master_initial_offset = server.master_repl_offset; - /* However if the "meaningful" offset, that is the offset without - * the final PINGs in the stream, is different, use this instead: - * often when the master is no longer reachable, replicas will never - * receive the PINGs, however the master will end with an incremented - * offset because of the PINGs and will not be able to incrementally - * PSYNC with the new master. */ - if (server.master_repl_offset > server.master_repl_meaningful_offset) { - long long delta = server.master_repl_offset - - server.master_repl_meaningful_offset; - serverLog(LL_NOTICE, - "Using the meaningful offset %lld instead of %lld to exclude " - "the final PINGs (%lld bytes difference)", - server.master_repl_meaningful_offset, - server.master_repl_offset, - delta); - server.master_initial_offset = server.master_repl_meaningful_offset; - server.repl_backlog_histlen -= delta; - if (server.repl_backlog_histlen < 0) server.repl_backlog_histlen = 0; - } - /* The master client we create can be set to any DBID, because * the new master will start its replication stream with SELECT. */ replicationCreateMasterClient(NULL,-1); @@ -2830,6 +2803,7 @@ void replicationCacheMasterUsingMyself(void) { unlinkClient(server.master); server.cached_master = server.master; server.master = NULL; + serverLog(LL_NOTICE,"Before turning into a replica, using my master parameters to synthesize a cached master: I may be able to synchronize with the new master with just a partial transfer."); } /* Free a cached master, called when there are no longer the conditions for @@ -3209,18 +3183,10 @@ void replicationCron(void) { clientsArePaused(); if (!manual_failover_in_progress) { - long long before_ping = server.master_repl_meaningful_offset; ping_argv[0] = createStringObject("PING",4); replicationFeedSlaves(server.slaves, server.slaveseldb, ping_argv, 1); decrRefCount(ping_argv[0]); - /* The server.master_repl_meaningful_offset variable represents - * the offset of the replication stream without the pending PINGs. - * This is useful to set the right replication offset for PSYNC - * when the master is turned into a replica. Otherwise pending - * PINGs may not allow it to perform an incremental sync with the - * new master. */ - server.master_repl_meaningful_offset = before_ping; } } diff --git a/src/server.c b/src/server.c index 5bc4666ee..b7a6a928f 100644 --- a/src/server.c +++ b/src/server.c @@ -2394,7 +2394,6 @@ void initServerConfig(void) { server.repl_syncio_timeout = CONFIG_REPL_SYNCIO_TIMEOUT; server.repl_down_since = 0; /* Never connected, repl is down since EVER. */ server.master_repl_offset = 0; - server.master_repl_meaningful_offset = 0; /* Replication partial resync backlog */ server.repl_backlog = NULL; @@ -4471,7 +4470,6 @@ sds genRedisInfoString(const char *section) { "master_replid:%s\r\n" "master_replid2:%s\r\n" "master_repl_offset:%lld\r\n" - "master_repl_meaningful_offset:%lld\r\n" "second_repl_offset:%lld\r\n" "repl_backlog_active:%d\r\n" "repl_backlog_size:%lld\r\n" @@ -4480,7 +4478,6 @@ sds genRedisInfoString(const char *section) { server.replid, server.replid2, server.master_repl_offset, - server.master_repl_meaningful_offset, server.second_replid_offset, server.repl_backlog != NULL, server.repl_backlog_size, @@ -4858,7 +4855,6 @@ void loadDataFromDisk(void) { { memcpy(server.replid,rsi.repl_id,sizeof(server.replid)); server.master_repl_offset = rsi.repl_offset; - server.master_repl_meaningful_offset = rsi.repl_offset; /* If we are a slave, create a cached master from this * information, in order to allow partial resynchronizations * with masters. */ diff --git a/src/server.h b/src/server.h index 4b4fd4e0d..8231c8a7a 100644 --- a/src/server.h +++ b/src/server.h @@ -1261,7 +1261,6 @@ struct redisServer { char replid[CONFIG_RUN_ID_SIZE+1]; /* My current replication ID. */ char replid2[CONFIG_RUN_ID_SIZE+1]; /* replid inherited from master*/ long long master_repl_offset; /* My current replication offset */ - long long master_repl_meaningful_offset; /* Offset minus latest PINGs. */ long long second_replid_offset; /* Accept offsets up to this for replid2. */ int slaveseldb; /* Last SELECTed DB in replication output */ int repl_ping_slave_period; /* Master pings the slave every N seconds */ |