summaryrefslogtreecommitdiff
path: root/source3/lib/dbwrap_ctdb.c
diff options
context:
space:
mode:
authorVolker Lendecke <vlendec@samba.org>2007-08-29 11:46:44 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:30:20 -0500
commita116d7c7d9ddaf6bc6798ed98b3c62369e924076 (patch)
treefe07cc0c45fe35011069abab80ec06b0cdeefeaa /source3/lib/dbwrap_ctdb.c
parenta0a32cf5d520937f492d32c743011741522f2d40 (diff)
downloadsamba-a116d7c7d9ddaf6bc6798ed98b3c62369e924076.tar.gz
samba-a116d7c7d9ddaf6bc6798ed98b3c62369e924076.tar.bz2
samba-a116d7c7d9ddaf6bc6798ed98b3c62369e924076.zip
r24773: Fix a ctdb connection lockup
The lockup could happen when packet_read_sync() gets two packets in a row, the first one being an async message, and the second one being the response to a ctdb request. Also add some debug msg to ctdb_conn.c, and cut off the "locking key" messages to only dump 20 hex chars at debug level 10. >10 will dump everything. (This used to be commit 0a55880a240b619810371a19144dd0a75208adfe)
Diffstat (limited to 'source3/lib/dbwrap_ctdb.c')
-rw-r--r--source3/lib/dbwrap_ctdb.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/source3/lib/dbwrap_ctdb.c b/source3/lib/dbwrap_ctdb.c
index 73d8eeffea..c5cb8d0aad 100644
--- a/source3/lib/dbwrap_ctdb.c
+++ b/source3/lib/dbwrap_ctdb.c
@@ -85,7 +85,9 @@ static int db_ctdb_record_destr(struct db_record* data)
struct db_ctdb_rec *crec = talloc_get_type_abort(
data->private_data, struct db_ctdb_rec);
- DEBUG(10, ("Unlocking key %s\n",
+ DEBUG(10, (DEBUGLEVEL > 10
+ ? "Unlocking db %u key %s\n" : "Unlocking db %u key %20s\n",
+ (int)crec->ctdb_ctx->db_id,
hex_encode(data, (unsigned char *)data->key.dptr,
data->key.dsize)));
@@ -135,9 +137,14 @@ static struct db_record *db_ctdb_fetch_locked(struct db_context *db,
*/
again:
- DEBUG(10, ("Locking key %s\n",
- hex_encode(result, (unsigned char *)key.dptr,
- key.dsize)));
+ if (DEBUGLEVEL >= 10) {
+ char *keystr = hex_encode(result, key.dptr, key.dsize);
+ DEBUG(10, (DEBUGLEVEL > 10
+ ? "Locking db %u key %s\n"
+ : "Locking db %u key %20s\n",
+ (int)crec->ctdb_ctx->db_id, keystr));
+ TALLOC_FREE(keystr);
+ }
if (tdb_chainlock(ctx->wtdb->tdb, key) != 0) {
DEBUG(3, ("tdb_chainlock failed\n"));