summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2009-12-03 00:27:34 +0100
committerMichael Adam <obnox@samba.org>2009-12-04 15:03:16 +0100
commitb3fd4955220dcc098fa50da70e6de2f300c8ffca (patch)
tree1cd1bc2234d5971f47c5113ba4a04b2dc175fcf6
parent7afefed6ae7f821b2e44c2c1cc27c08fd1bfd015 (diff)
downloadsamba-b3fd4955220dcc098fa50da70e6de2f300c8ffca.tar.gz
samba-b3fd4955220dcc098fa50da70e6de2f300c8ffca.tar.xz
samba-b3fd4955220dcc098fa50da70e6de2f300c8ffca.zip
client: untangle checks and produce more detailed error messages
in ctdb_transaction_fetch_start Michael (This used to be ctdb commit 428914377851a98b3fc893798783fbfebffc1c0d)
-rw-r--r--ctdb/client/ctdb_client.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/ctdb/client/ctdb_client.c b/ctdb/client/ctdb_client.c
index d0a0e335f9..c73200d0c7 100644
--- a/ctdb/client/ctdb_client.c
+++ b/ctdb/client/ctdb_client.c
@@ -3265,13 +3265,25 @@ again:
}
ret = ctdb_ltdb_fetch(ctdb_db, key, &header, tmp_ctx, &data);
- if (ret != 0 || header.dmaster != ctdb_db->ctdb->pnn) {
+ if (ret != 0) {
+ DEBUG(DEBUG_ERR,(__location__ " Failed to re-fetch transaction "
+ "lock record inside transaction\n"));
+ tdb_transaction_cancel(ctdb_db->ltdb->tdb);
+ talloc_free(tmp_ctx);
+ goto again;
+ }
+
+ if (header.dmaster != ctdb_db->ctdb->pnn) {
+ DEBUG(DEBUG_DEBUG,(__location__ " not dmaster any more on "
+ "transaction lock record\n"));
tdb_transaction_cancel(ctdb_db->ltdb->tdb);
talloc_free(tmp_ctx);
goto again;
}
if ((data.dsize != sizeof(pid_t)) || (*(pid_t *)(data.dptr) != pid)) {
+ DEBUG(DEBUG_DEBUG, (__location__ " my pid is not stored in "
+ "the transaction lock record\n"));
tdb_transaction_cancel(ctdb_db->ltdb->tdb);
talloc_free(tmp_ctx);
goto again;