[SCM] CTDB repository - branch libctdb updated - ctdb-1.0.114-103-g2a903bc

Ronnie Sahlberg sahlberg at samba.org
Thu May 13 21:47:10 MDT 2010


The branch, libctdb has been updated
       via  2a903bc8513842da1b569c27d212bb7a3b1c1725 (commit)
      from  92953f7b0bee7f5312f5ef340a9638fbe4ba8f54 (commit)

http://gitweb.samba.org/?p=sahlberg/ctdb.git;a=shortlog;h=libctdb


- Log -----------------------------------------------------------------
commit 2a903bc8513842da1b569c27d212bb7a3b1c1725
Author: Ronnie Sahlberg <ronniesahlberg at gmail.com>
Date:   Fri May 14 13:43:00 2010 +1000

    in ctdb_getrecmaster_recv  return 0 (success) when the fucntion completed correctly and not state->status which is the PNN number in this case.
    
    fix some additional bugs and improve error handling in the callbacks

-----------------------------------------------------------------------

Summary of changes:
 common/cmdline.c  |    2 +-
 libctdb/libctdb.c |   30 +++++++++++++++++++++++++++---
 2 files changed, 28 insertions(+), 4 deletions(-)


Changeset truncated at 500 lines:

diff --git a/common/cmdline.c b/common/cmdline.c
index fb725f4..5446a4a 100644
--- a/common/cmdline.c
+++ b/common/cmdline.c
@@ -152,7 +152,7 @@ struct ctdb_context *ctdb_cmdline_client(struct event_context *ev)
 	}
 
 	/* get our pnn */
-	ctdb->pnn = ctdb_ctrl_getpnn(ctdb, timeval_current_ofs(3, 0), CTDB_CURRENT_NODE);
+	ctdb->pnn = ctdb_ctrl_getpnn(ctdb, timeval_current_ofs(30, 0), CTDB_CURRENT_NODE);
 	if (ctdb->pnn == (uint32_t)-1) {
 		DEBUG(DEBUG_CRIT,(__location__ " Failed to get ctdb pnn\n"));
 		talloc_free(ctdb);
diff --git a/libctdb/libctdb.c b/libctdb/libctdb.c
index 4bf4095..02c5962 100644
--- a/libctdb/libctdb.c
+++ b/libctdb/libctdb.c
@@ -158,6 +158,12 @@ ctdb_getpnn_recv_cb(struct ctdb_client_control_state *state)
 	struct ctdb_control_cb_data *cb_data = state->async.private_data;
 	ctdb_getpnn_cb callback = (ctdb_getpnn_cb)cb_data->callback;
 
+	if (state->state != CTDB_CONTROL_DONE) {
+		DEBUG(DEBUG_ERR, (__location__ " ctdb_getpnn_recv_cb failed with state:%d\n", state->state));
+		callback(-1, 0, cb_data->private_data);
+		return;
+	}
+
 	callback(0, state->status, cb_data->private_data);
 }
 
@@ -207,7 +213,7 @@ int ctdb_getpnn_recv(struct ctdb_context *ctdb, ctdb_handle *handle, uint32_t *p
 		*pnn = (uint32_t)res;
 	}
 
-	return state->status;
+	return 0;
 }
 
 int ctdb_getpnn(struct ctdb_context *ctdb, uint32_t destnode, uint32_t *pnn)
@@ -234,6 +240,12 @@ ctdb_getrecmaster_recv_cb(struct ctdb_client_control_state *state)
 	struct ctdb_control_cb_data *cb_data = state->async.private_data;
 	ctdb_getrecmaster_cb callback = (ctdb_getrecmaster_cb)cb_data->callback;
 
+	if (state->state != CTDB_CONTROL_DONE) {
+		DEBUG(DEBUG_ERR, (__location__ " ctdb_getrecmaster_recv_cb failed with state:%d\n", state->state));
+		callback(-1, 0, cb_data->private_data);
+		return;
+	}
+
 	callback(0, state->status, cb_data->private_data);
 }
 
@@ -283,7 +295,7 @@ int ctdb_getrecmaster_recv(struct ctdb_context *ctdb, ctdb_handle *handle, uint3
 		*recmaster = (uint32_t)res;
 	}
 
-	return state->status;
+	return 0;
 }
 
 int ctdb_getrecmaster(struct ctdb_context *ctdb, uint32_t destnode, uint32_t *recmaster)
@@ -315,6 +327,12 @@ ctdb_set_message_handler_recv_cb(struct ctdb_client_control_state *state)
 	struct ctdb_control_cb_data *cb_data = state->async.private_data;
 	ctdb_set_message_handler_cb callback = (ctdb_set_message_handler_cb)cb_data->callback;
 
+	if (state->state != CTDB_CONTROL_DONE) {
+		DEBUG(DEBUG_ERR, (__location__ " ctdb_getrecmaster_recv_cb failed with state:%d\n", state->state));
+		callback(-1, cb_data->private_data);
+		return;
+	}
+
 	callback(state->status, cb_data->private_data);
 }
 
@@ -394,6 +412,12 @@ ctdb_remove_message_handler_recv_cb(struct ctdb_client_control_state *state)
 	struct ctdb_control_cb_data *cb_data = state->async.private_data;
 	ctdb_remove_message_handler_cb callback = (ctdb_remove_message_handler_cb)cb_data->callback;
 
+	if (state->state != CTDB_CONTROL_DONE) {
+		DEBUG(DEBUG_ERR, (__location__ " ctdb_getrecmaster_recv_cb failed with state:%d\n", state->state));
+		callback(-1, cb_data->private_data);
+		return;
+	}
+
 	callback(state->status, cb_data->private_data);
 }
 
@@ -484,7 +508,7 @@ ctdb_createdb_recv_cb(struct ctdb_client_control_state *state)
 		if (state->outdata.dsize != sizeof(uint32_t)) {
 			DEBUG(DEBUG_ERR, (" Wrond size of data returned for CREATEDB control. Got %zd bytes but expected %zd\n", state->outdata.dsize, sizeof(uint32_t)));
 			
-			callback(CTDB_CONTROL_ERROR, 0, cb_data->private_data);
+			callback(-1, 0, cb_data->private_data);
 			return;
 		}
 


-- 
CTDB repository


More information about the samba-cvs mailing list