提交 bf821954 编写于 作者: A antirez

Cluster: added function to broadcast pings.

See the function top-comment for info why this is useful sometimes.
上级 892e9854
......@@ -1193,6 +1193,27 @@ void clusterSendPing(clusterLink *link, int type) {
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.
*
* If link is NULL, then the message is broadcasted to the whole cluster. */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册