From 3c6c230b2d5c8a2632163a5f11d9e3f1f3db1639 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Tue, 27 Oct 2009 10:43:51 +1100 Subject: s4:ldb Add additional tracing of the ldb API This helps pin down where errors occour, by printing a call stack and setting error strings and trace messages in the transaction case. Andrew Bartlett --- source4/lib/ldb/common/ldb.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'source4/lib/ldb/common/ldb.c') diff --git a/source4/lib/ldb/common/ldb.c b/source4/lib/ldb/common/ldb.c index 59727d75d0..9be3aa13e4 100644 --- a/source4/lib/ldb/common/ldb.c +++ b/source4/lib/ldb/common/ldb.c @@ -288,6 +288,10 @@ void ldb_reset_err_string(struct ldb_context *ldb) #define FIRST_OP_NOERR(ldb, op) do { \ module = ldb->modules; \ while (module && module->ops->op == NULL) module = module->next; \ + if ((ldb->flags & LDB_FLG_ENABLE_TRACING) && module) { \ + ldb_debug(ldb, LDB_DEBUG_TRACE, "ldb_trace_request: (%s)->" #op, \ + module->ops->name); \ + } \ } while (0) #define FIRST_OP(ldb, op) do { \ @@ -335,6 +339,10 @@ int ldb_transaction_start(struct ldb_context *ldb) status); } } + if ((module && module->ldb->flags & LDB_FLG_ENABLE_TRACING)) { + ldb_debug(module->ldb, LDB_DEBUG_TRACE, "start ldb transaction error: %s", + ldb_errstring(module->ldb)); + } return status; } @@ -383,6 +391,10 @@ int ldb_transaction_prepare_commit(struct ldb_context *ldb) ldb_strerror(status), status); } + if ((module && module->ldb->flags & LDB_FLG_ENABLE_TRACING)) { + ldb_debug(module->ldb, LDB_DEBUG_TRACE, "prepare commit transaction error: %s", + ldb_errstring(module->ldb)); + } } return status; @@ -432,6 +444,10 @@ int ldb_transaction_commit(struct ldb_context *ldb) ldb_strerror(status), status); } + if ((module && module->ldb->flags & LDB_FLG_ENABLE_TRACING)) { + ldb_debug(module->ldb, LDB_DEBUG_TRACE, "commit ldb transaction error: %s", + ldb_errstring(module->ldb)); + } /* cancel the transaction */ FIRST_OP(ldb, del_transaction); module->ops->del_transaction(module); @@ -477,6 +493,10 @@ int ldb_transaction_cancel(struct ldb_context *ldb) ldb_strerror(status), status); } + if ((module && module->ldb->flags & LDB_FLG_ENABLE_TRACING)) { + ldb_debug(module->ldb, LDB_DEBUG_TRACE, "cancel ldb transaction error: %s", + ldb_errstring(module->ldb)); + } } return status; } -- cgit