The branch, master has been updated via eff3f326f8ce6070c9f3c430cd14d1b71a8db220 (commit) from 3fad7d67f2c66ac3a65cfd821fd6db6342f4a3f0 (commit)
http://gitweb.samba.org/?p=sahlberg/ctdb.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit eff3f326f8ce6070c9f3c430cd14d1b71a8db220 Author: Ronnie Sahlberg <[EMAIL PROTECTED]> Date: Tue Apr 22 00:56:27 2008 +1000 when a node disgrees with us re who is recmaster make it mark that node as a lcuprit so it eventually gets banned ----------------------------------------------------------------------- Summary of changes: server/ctdb_recoverd.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) Changeset truncated at 500 lines: diff --git a/server/ctdb_recoverd.c b/server/ctdb_recoverd.c index 0d1ef02..1ffae72 100644 --- a/server/ctdb_recoverd.c +++ b/server/ctdb_recoverd.c @@ -1914,6 +1914,7 @@ static enum monitor_result verify_recmode(struct ctdb_context *ctdb, struct ctdb struct verify_recmaster_data { + struct ctdb_recoverd *rec; uint32_t count; uint32_t pnn; enum monitor_result status; @@ -1942,6 +1943,7 @@ static void verify_recmaster_callback(struct ctdb_client_control_state *state) */ if (state->status != rmdata->pnn) { DEBUG(DEBUG_ERR,("Node %d does not agree we are the recmaster. Need a new recmaster election\n", state->c->hdr.destnode)); + ctdb_set_culprit(rmdata->rec, state->c->hdr.destnode); rmdata->status = MONITOR_ELECTION_NEEDED; } @@ -1950,8 +1952,9 @@ static void verify_recmaster_callback(struct ctdb_client_control_state *state) /* verify that all nodes agree that we are the recmaster */ -static enum monitor_result verify_recmaster(struct ctdb_context *ctdb, struct ctdb_node_map *nodemap, uint32_t pnn) +static enum monitor_result verify_recmaster(struct ctdb_recoverd *rec, struct ctdb_node_map *nodemap, uint32_t pnn) { + struct ctdb_context *ctdb = rec->ctdb; struct verify_recmaster_data *rmdata; TALLOC_CTX *mem_ctx = talloc_new(ctdb); struct ctdb_client_control_state *state; @@ -1960,6 +1963,7 @@ static enum monitor_result verify_recmaster(struct ctdb_context *ctdb, struct ct rmdata = talloc(mem_ctx, struct verify_recmaster_data); CTDB_NO_MEMORY_FATAL(ctdb, rmdata); + rmdata->rec = rec; rmdata->count = 0; rmdata->pnn = pnn; rmdata->status = MONITOR_OK; @@ -2453,7 +2457,7 @@ again: /* verify that all active nodes agree that we are the recmaster */ - switch (verify_recmaster(ctdb, nodemap, pnn)) { + switch (verify_recmaster(rec, nodemap, pnn)) { case MONITOR_RECOVERY_NEEDED: /* can not happen */ goto again; -- CTDB repository