*/
static int send_election_request(struct ctdb_recoverd *rec)
{
- int ret;
TDB_DATA election_data;
struct election_message emsg;
uint64_t srvid;
election_data.dptr = (unsigned char *)&emsg;
- /* first we assume we will win the election and set
- recoverymaster to be ourself on the current node
- */
- ret = ctdb_ctrl_setrecmaster(ctdb,
- CONTROL_TIMEOUT(),
- CTDB_CURRENT_NODE,
- rec->pnn);
- if (ret != 0) {
- DEBUG(DEBUG_ERR, (__location__ " failed to set recmaster\n"));
- return -1;
- }
+ /* Assume this node will win the election, set leader accordingly */
rec->leader = rec->pnn;
/* send an election message to all active nodes */
struct ctdb_recoverd *rec = talloc_get_type(
private_data, struct ctdb_recoverd);
struct ctdb_context *ctdb = rec->ctdb;
- int ret;
struct election_message *em = (struct election_message *)data.dptr;
/* Ignore election packets from ourself */
}
/* Set leader to the winner of this round */
- ret = ctdb_ctrl_setrecmaster(ctdb, CONTROL_TIMEOUT(),
- CTDB_CURRENT_NODE, em->pnn);
- if (ret != 0) {
- DEBUG(DEBUG_ERR, (__location__ " failed to set recmaster"));
- return;
- }
rec->leader = em->pnn;
return;
}
-
/*
force the start of the election process
*/
{
struct ctdb_recoverd *rec = talloc_get_type_abort(
private_data, struct ctdb_recoverd);
- struct ctdb_context *ctdb = rec->ctdb;
uint32_t pnn;
size_t npull;
int ret;
}
D_NOTICE("Received leader broadcast, leader=%"PRIu32"\n", pnn);
-
- ret = ctdb_ctrl_setrecmaster(ctdb,
- CONTROL_TIMEOUT(),
- CTDB_CURRENT_NODE,
- pnn);
- if (ret != 0) {
- DBG_WARNING("Failed to set leader\n");
- goto done;
- }
-
rec->leader = pnn;
done: