mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-22 16:18:28 -05:00
Cluster: FAILOVER_AUTH_REQUEST message type introduced.
This message is sent by a slave that is ready to failover its master to other nodes to get the authorization from the majority of masters.
This commit is contained in:
parent
575cbc9990
commit
db7c17e969
@ -1248,6 +1248,23 @@ void clusterPropagatePublish(robj *channel, robj *message) {
|
||||
* SLAVE node specific functions
|
||||
* -------------------------------------------------------------------------- */
|
||||
|
||||
/* This function sends a FAILOVE_AUTH_REQUEST message to every node in order to
|
||||
* see if there is the quorum for this slave instance to failover its failing
|
||||
* master.
|
||||
*
|
||||
* Note that we send the failover request to everybody, master and slave nodes,
|
||||
* but only the masters are supposed to reply to our query. */
|
||||
void clusterRequestFailoverAuth(void) {
|
||||
unsigned char buf[4096], *payload;
|
||||
clusterMsg *hdr = (clusterMsg*) buf;
|
||||
uint32_t totlen;
|
||||
|
||||
clusterBuildMessageHdr(hdr,CLUSTERMSG_TYPE_FAILOVER_AUTH_REQUEST);
|
||||
totlen = sizeof(clusterMsg)-sizeof(union clusterMsgData);
|
||||
hdr->totlen = htonl(totlen);
|
||||
clusterBroadcastMessage(payload,totlen);
|
||||
}
|
||||
|
||||
/* This function is called if we are a slave node and our master serving
|
||||
* a non-zero amount of hash slots is in PFAIL state.
|
||||
*
|
||||
|
@ -594,6 +594,7 @@ typedef struct {
|
||||
#define CLUSTERMSG_TYPE_MEET 2 /* Meet "let's join" message */
|
||||
#define CLUSTERMSG_TYPE_FAIL 3 /* Mark node xxx as failing */
|
||||
#define CLUSTERMSG_TYPE_PUBLISH 4 /* Pub/Sub Publish propagation */
|
||||
#define CLUSTERMSG_TYPE_FAILOVER_AUTH_REQUEST 5 /* May I failover? */
|
||||
|
||||
/* Initially we don't know our "name", but we'll find it once we connect
|
||||
* to the first node, using the getsockname() function. Then we'll use this
|
||||
|
Loading…
Reference in New Issue
Block a user