[SCM] CTDB repository - branch master updated - eff3f326f8ce6070c9f3c430cd14d1b71a8db220

Ronnie Sahlberg sahlberg at samba.org
Mon Apr 21 15:00:42 GMT 2008


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 <sahlberg at samba.org>
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


More information about the samba-cvs mailing list