mirror of
https://github.com/fluencelabs/redis
synced 2025-04-13 12:46:03 +00:00
Cluster: update our currentEpoch when a greater one is seen.
This commit is contained in:
parent
d426ada891
commit
6ec795d2cf
@ -873,6 +873,7 @@ int clusterProcessPacket(clusterLink *link) {
|
|||||||
uint32_t totlen = ntohl(hdr->totlen);
|
uint32_t totlen = ntohl(hdr->totlen);
|
||||||
uint16_t type = ntohs(hdr->type);
|
uint16_t type = ntohs(hdr->type);
|
||||||
uint16_t flags = ntohs(hdr->flags);
|
uint16_t flags = ntohs(hdr->flags);
|
||||||
|
uint64_t senderCurrentEpoch, senderConfigEpoch;
|
||||||
clusterNode *sender;
|
clusterNode *sender;
|
||||||
|
|
||||||
redisLog(REDIS_DEBUG,"--- Processing packet of type %d, %lu bytes",
|
redisLog(REDIS_DEBUG,"--- Processing packet of type %d, %lu bytes",
|
||||||
@ -909,9 +910,17 @@ int clusterProcessPacket(clusterLink *link) {
|
|||||||
if (totlen != explen) return 1;
|
if (totlen != explen) return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Process packets by type. */
|
/* Check if the sender is known.
|
||||||
|
* If it is, update our currentEpoch to its epoch if greater than our. */
|
||||||
sender = clusterLookupNode(hdr->sender);
|
sender = clusterLookupNode(hdr->sender);
|
||||||
|
if (sender && !(sender->flags & REDIS_NODE_HANDSHAKE)) {
|
||||||
|
senderCurrentEpoch = ntohu64(hdr->currentEpoch);
|
||||||
|
senderConfigEpoch = ntohu64(hdr->configEpoch);
|
||||||
|
if (senderCurrentEpoch > server.cluster->currentEpoch)
|
||||||
|
server.cluster->currentEpoch = senderCurrentEpoch;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Process packets by type. */
|
||||||
if (type == CLUSTERMSG_TYPE_PING || type == CLUSTERMSG_TYPE_MEET) {
|
if (type == CLUSTERMSG_TYPE_PING || type == CLUSTERMSG_TYPE_MEET) {
|
||||||
int update_config = 0;
|
int update_config = 0;
|
||||||
redisLog(REDIS_DEBUG,"Ping packet received: %p", (void*)link->node);
|
redisLog(REDIS_DEBUG,"Ping packet received: %p", (void*)link->node);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user