From 21d485184df986e1a123f70c689517386e51a5ce Mon Sep 17 00:00:00 2001 From: Michal Zidek Date: Thu, 16 Aug 2012 18:48:53 +0200 Subject: Unify usage of sysdb transactions Removing bad examples of usage of sysdb_transaction_start/commit/end functions and making it more consistent (all files except of src/db/sysdb_*.c). --- src/providers/ldap/sdap_async_users.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/providers/ldap/sdap_async_users.c') diff --git a/src/providers/ldap/sdap_async_users.c b/src/providers/ldap/sdap_async_users.c index dfce319b..8974e6a2 100644 --- a/src/providers/ldap/sdap_async_users.c +++ b/src/providers/ldap/sdap_async_users.c @@ -377,8 +377,10 @@ int sdap_save_users(TALLOC_CTX *memctx, char *higher_usn = NULL; char *usn_value; int ret; + errno_t sret; int i; time_t now; + bool in_transaction = false; if (num_users == 0) { /* Nothing to do if there are no users */ @@ -392,8 +394,10 @@ int sdap_save_users(TALLOC_CTX *memctx, ret = sysdb_transaction_start(sysdb); if (ret) { + DEBUG(SSSDBG_CRIT_FAILURE, ("Failed to start transaction\n")); goto done; } + in_transaction = true; now = time(NULL); for (i = 0; i < num_users; i++) { @@ -428,15 +432,22 @@ int sdap_save_users(TALLOC_CTX *memctx, ret = sysdb_transaction_commit(sysdb); if (ret) { - DEBUG(1, ("Failed to commit transaction!\n")); + DEBUG(SSSDBG_CRIT_FAILURE, ("Failed to commit transaction!\n")); goto done; } + in_transaction = false; if (_usn_value) { *_usn_value = talloc_steal(memctx, higher_usn); } done: + if (in_transaction) { + sret = sysdb_transaction_cancel(sysdb); + if (sret != EOK) { + DEBUG(SSSDBG_CRIT_FAILURE, ("Failed to cancel transaction\n")); + } + } talloc_zfree(tmpctx); return ret; } -- cgit