mirror of
https://github.com/fluencelabs/redis
synced 2025-03-19 09:00:51 +00:00
Cluster: added function to broadcast pings.
See the function top-comment for info why this is useful sometimes.
This commit is contained in:
parent
892e98548a
commit
bf82195467
@ -1193,6 +1193,27 @@ void clusterSendPing(clusterLink *link, int type) {
|
|||||||
clusterSendMessage(link,buf,totlen);
|
clusterSendMessage(link,buf,totlen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Send a PING packet to every connected node that's not in handshake state.
|
||||||
|
*
|
||||||
|
* Usually cluster nodes will ping just another node every second, however
|
||||||
|
* in Redis Cluster pings are not just used for failure detection, but also
|
||||||
|
* to carry important configuration informations. So broadcasting a ping is
|
||||||
|
* useful when something changes in the configuration and we want to make
|
||||||
|
* the cluster aware ASAP (for instance after a slave promotion). */
|
||||||
|
void clusterBroadcastPing(void) {
|
||||||
|
dictIterator *di;
|
||||||
|
dictEntry *de;
|
||||||
|
|
||||||
|
di = dictGetIterator(server.cluster->nodes);
|
||||||
|
while((de = dictNext(di)) != NULL) {
|
||||||
|
clusterNode *node = dictGetVal(de);
|
||||||
|
|
||||||
|
if (node->flags & (REDIS_NODE_MYSELF|REDIS_NODE_HANDSHAKE)) continue;
|
||||||
|
clusterSendPing(node->link,CLUSTERMSG_TYPE_PONG);
|
||||||
|
}
|
||||||
|
dictReleaseIterator(di);
|
||||||
|
}
|
||||||
|
|
||||||
/* Send a PUBLISH message.
|
/* Send a PUBLISH message.
|
||||||
*
|
*
|
||||||
* If link is NULL, then the message is broadcasted to the whole cluster. */
|
* If link is NULL, then the message is broadcasted to the whole cluster. */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user