[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