return 0;
}
-static enum monitor_result validate_recovery_master(struct ctdb_recoverd *rec,
- TALLOC_CTX *mem_ctx)
+static bool validate_recovery_master(struct ctdb_recoverd *rec,
+ TALLOC_CTX *mem_ctx)
{
struct ctdb_context *ctdb = rec->ctdb;
uint32_t pnn = ctdb_get_pnn(ctdb);
if (rec->recmaster == CTDB_UNKNOWN_PNN) {
DEBUG(DEBUG_NOTICE,
("Initial recovery master set - forcing election\n"));
- return MONITOR_ELECTION_NEEDED;
+ force_election(rec, pnn, nodemap);
+ return false;
}
/*
(" Current recmaster node %u does not have CAP_RECMASTER,"
" but we (node %u) have - force an election\n",
rec->recmaster, pnn));
- return MONITOR_ELECTION_NEEDED;
+ force_election(rec, pnn, nodemap);
+ return false;
}
/* Verify that the master node has not been deleted. This
DEBUG(DEBUG_ERR,
("Recmaster node %u has been deleted. Force election\n",
rec->recmaster));
- return MONITOR_ELECTION_NEEDED;
+ force_election(rec, pnn, nodemap);
+ return false;
}
/* if recovery master is disconnected/deleted we must elect a new recmaster */
DEBUG(DEBUG_NOTICE,
("Recmaster node %u is disconnected/deleted. Force election\n",
rec->recmaster));
- return MONITOR_ELECTION_NEEDED;
+ force_election(rec, pnn, nodemap);
+ return false;
}
/* get nodemap from the recovery master to check if it is inactive */
(__location__
" Unable to get nodemap from recovery master %u\n",
rec->recmaster));
- return MONITOR_FAILED;
+ /* No election, just error */
+ return false;
}
*/
nodemap->nodes[rec->recmaster].flags =
recmaster_nodemap->nodes[rec->recmaster].flags;
- return MONITOR_ELECTION_NEEDED;
+ force_election(rec, pnn, nodemap);
+ return false;
}
- return MONITOR_OK;
+ return true;
}
static void main_loop(struct ctdb_context *ctdb, struct ctdb_recoverd *rec,
return;
}
- switch (validate_recovery_master(rec, mem_ctx)) {
- case MONITOR_RECOVERY_NEEDED:
- /* can not happen */
- return;
- case MONITOR_ELECTION_NEEDED:
- force_election(rec, pnn, nodemap);
- return;
- case MONITOR_OK:
- break;
- case MONITOR_FAILED:
+ if (! validate_recovery_master(rec, mem_ctx)) {
return;
}