*/
struct ctdb_recoverd {
struct ctdb_context *ctdb;
- uint32_t recmaster;
+ uint32_t leader;
uint32_t pnn;
uint32_t last_culprit_node;
struct ctdb_node_map_old *nodemap;
static bool this_node_is_leader(struct ctdb_recoverd *rec)
{
- return rec->recmaster == rec->pnn;
+ return rec->leader == rec->pnn;
}
/*
rec->election_timeout = NULL;
fast_start = false;
- D_WARNING("Election period ended, master=%u\n", rec->recmaster);
+ D_WARNING("Election period ended, master=%u\n", rec->leader);
}
if (!this_node_is_leader(rec)) {
D_ERR("Recmaster changed to %u, aborting %s\n",
- rec->recmaster, type);
+ rec->leader, type);
state->result = 1;
break;
}
if (!this_node_is_leader(rec)) {
DEBUG(DEBUG_NOTICE,
("Recovery master changed to %u, aborting recovery\n",
- rec->recmaster));
+ rec->leader));
return -1;
}
if (!this_node_is_leader(rec)) {
D_NOTICE("Recovery master changed to %u,"
" aborting recovery\n",
- rec->recmaster);
+ rec->leader);
rec->need_recovery = false;
goto fail;
}
DEBUG(DEBUG_ERR, (__location__ " failed to set recmaster\n"));
return -1;
}
- rec->recmaster = rec->pnn;
+ rec->leader = rec->pnn;
/* send an election message to all active nodes */
DEBUG(DEBUG_INFO,(__location__ " Send election request to all active nodes\n"));
DEBUG(DEBUG_ERR, (__location__ " failed to set recmaster"));
return;
}
- rec->recmaster = em->pnn;
+ rec->leader = em->pnn;
return;
}
uint32_t *nodes;
/* read the node flags from the recmaster */
- ret = ctdb_ctrl_getnodemap(ctdb, CONTROL_TIMEOUT(), rec->recmaster,
+ ret = ctdb_ctrl_getnodemap(ctdb, CONTROL_TIMEOUT(), rec->leader,
tmp_ctx, &nodemap);
if (ret != 0) {
DEBUG(DEBUG_ERR, (__location__ " Unable to get nodemap from node %u\n", c->pnn));
/* loop over all active nodes and send an async getrecmaster call to
them*/
for (j=0; j<nodemap->num; j++) {
- if (nodemap->nodes[j].pnn == rec->recmaster) {
+ if (nodemap->nodes[j].pnn == rec->leader) {
continue;
}
if (nodemap->nodes[j].flags & NODE_FLAGS_INACTIVE) {
/* When recovery daemon is started, recmaster is set to
* "unknown" so it knows to start an election.
*/
- if (rec->recmaster == CTDB_UNKNOWN_PNN) {
+ if (rec->leader == CTDB_UNKNOWN_PNN) {
DEBUG(DEBUG_NOTICE,
("Initial recovery master set - forcing election\n"));
force_election(rec);
* recmaster.
*/
if (!ctdb_node_has_capabilities(rec->caps,
- rec->recmaster,
+ rec->leader,
CTDB_CAP_RECMASTER) &&
(rec->ctdb->capabilities & CTDB_CAP_RECMASTER) &&
!(nodemap->nodes[rec->pnn].flags & NODE_FLAGS_INACTIVE)) {
DEBUG(DEBUG_ERR,
(" Current recmaster node %u does not have CAP_RECMASTER,"
" but we (node %u) have - force an election\n",
- rec->recmaster, rec->pnn));
+ rec->leader, rec->pnn));
force_election(rec);
return false;
}
* before now. However, if something strange has happened
* then checking here will ensure we don't index beyond the
* end of the nodemap array. */
- if (rec->recmaster >= nodemap->num) {
+ if (rec->leader >= nodemap->num) {
DEBUG(DEBUG_ERR,
("Recmaster node %u has been deleted. Force election\n",
- rec->recmaster));
+ rec->leader));
force_election(rec);
return false;
}
/* if recovery master is disconnected/deleted we must elect a new recmaster */
- if (nodemap->nodes[rec->recmaster].flags &
+ if (nodemap->nodes[rec->leader].flags &
(NODE_FLAGS_DISCONNECTED|NODE_FLAGS_DELETED)) {
DEBUG(DEBUG_NOTICE,
("Recmaster node %u is disconnected/deleted. Force election\n",
- rec->recmaster));
+ rec->leader));
force_election(rec);
return false;
}
/* get nodemap from the recovery master to check if it is inactive */
- ret = ctdb_ctrl_getnodemap(ctdb, CONTROL_TIMEOUT(), rec->recmaster,
+ ret = ctdb_ctrl_getnodemap(ctdb, CONTROL_TIMEOUT(), rec->leader,
mem_ctx, &recmaster_nodemap);
if (ret != 0) {
DEBUG(DEBUG_ERR,
(__location__
" Unable to get nodemap from recovery master %u\n",
- rec->recmaster));
+ rec->leader));
/* No election, just error */
return false;
}
- if ((recmaster_nodemap->nodes[rec->recmaster].flags & NODE_FLAGS_INACTIVE) &&
+ if ((recmaster_nodemap->nodes[rec->leader].flags & NODE_FLAGS_INACTIVE) &&
(rec->node_flags & NODE_FLAGS_INACTIVE) == 0) {
DEBUG(DEBUG_NOTICE,
("Recmaster node %u is inactive. Force election\n",
- rec->recmaster));
+ rec->leader));
/*
* update our nodemap to carry the recmaster's notion of
* its own flags, so that we don't keep freezing the
* inactive recmaster node...
*/
- nodemap->nodes[rec->recmaster].flags =
- recmaster_nodemap->nodes[rec->recmaster].flags;
+ nodemap->nodes[rec->leader].flags =
+ recmaster_nodemap->nodes[rec->leader].flags;
force_election(rec);
return false;
}
if (is_complete) {
if (! was_complete) {
D_WARNING("Cluster complete with master=%u\n",
- rec->recmaster);
+ rec->leader);
start_incomplete = timeval_zero();
}
goto done;
log:
D_WARNING("Cluster incomplete with master=%u, elapsed=%u minutes, "
"connected=%u\n",
- rec->recmaster,
+ rec->leader,
minutes,
num_connected);
CTDB_NO_MEMORY_FATAL(ctdb, rec);
rec->ctdb = ctdb;
- rec->recmaster = CTDB_UNKNOWN_PNN;
+ rec->leader = CTDB_UNKNOWN_PNN;
rec->pnn = ctdb_get_pnn(ctdb);
rec->recovery_lock_handle = NULL;
rec->helper_pid = -1;