summaryrefslogtreecommitdiffstats
path: root/ctdb
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2009-12-07 13:19:33 +0100
committerStefan Metzmacher <metze@samba.org>2009-12-16 08:03:56 +0100
commit9069d3a7fb013a87c1b4e4c0a83651d3921e9955 (patch)
tree144dcb6fd2fcaf444b7d4e2d948fbe469415151e /ctdb
parent8fbb5b7915c7881f776d9a1828554d5c54c3cacb (diff)
downloadsamba-9069d3a7fb013a87c1b4e4c0a83651d3921e9955.tar.gz
samba-9069d3a7fb013a87c1b4e4c0a83651d3921e9955.tar.xz
samba-9069d3a7fb013a87c1b4e4c0a83651d3921e9955.zip
server: move error handling to a 'fail' label in ctdb_control_transaction_commit()
metze (This used to be ctdb commit d874463235fa299e83fe562291c688aca3b85cf3)
Diffstat (limited to 'ctdb')
-rw-r--r--ctdb/server/ctdb_freeze.c33
1 files changed, 19 insertions, 14 deletions
diff --git a/ctdb/server/ctdb_freeze.c b/ctdb/server/ctdb_freeze.c
index 0a0ac92de5..37c90a275b 100644
--- a/ctdb/server/ctdb_freeze.c
+++ b/ctdb/server/ctdb_freeze.c
@@ -508,23 +508,14 @@ int32_t ctdb_control_transaction_commit(struct ctdb_context *ctdb, uint32_t id)
}
for (ctdb_db=ctdb->db_list;ctdb_db;ctdb_db=ctdb_db->next) {
+ int ret;
+
tdb_add_flags(ctdb_db->ltdb->tdb, TDB_NOLOCK);
- if (tdb_transaction_commit(ctdb_db->ltdb->tdb) != 0) {
+ ret = tdb_transaction_commit(ctdb_db->ltdb->tdb);
+ if (ret != 0) {
DEBUG(DEBUG_ERR,(__location__ " Failed to commit transaction for db '%s'. Cancel all transactions and resetting transaction_started to false.\n",
ctdb_db->db_name));
-
- /* cancel any pending transactions */
- for (ctdb_db=ctdb->db_list;ctdb_db;ctdb_db=ctdb_db->next) {
- tdb_add_flags(ctdb_db->ltdb->tdb, TDB_NOLOCK);
- if (tdb_transaction_cancel(ctdb_db->ltdb->tdb) != 0) {
- DEBUG(DEBUG_ERR,(__location__ " Failed to cancel transaction for db '%s'\n",
- ctdb_db->db_name));
- }
- tdb_remove_flags(ctdb_db->ltdb->tdb, TDB_NOLOCK);
- }
- ctdb->freeze_transaction_started = false;
-
- return -1;
+ goto fail;
}
tdb_remove_flags(ctdb_db->ltdb->tdb, TDB_NOLOCK);
}
@@ -533,6 +524,20 @@ int32_t ctdb_control_transaction_commit(struct ctdb_context *ctdb, uint32_t id)
ctdb->freeze_transaction_id = 0;
return 0;
+
+fail:
+ /* cancel any pending transactions */
+ for (ctdb_db=ctdb->db_list;ctdb_db;ctdb_db=ctdb_db->next) {
+ tdb_add_flags(ctdb_db->ltdb->tdb, TDB_NOLOCK);
+ if (tdb_transaction_cancel(ctdb_db->ltdb->tdb) != 0) {
+ DEBUG(DEBUG_ERR,(__location__ " Failed to cancel transaction for db '%s'\n",
+ ctdb_db->db_name));
+ }
+ tdb_remove_flags(ctdb_db->ltdb->tdb, TDB_NOLOCK);
+ }
+ ctdb->freeze_transaction_started = false;
+
+ return -1;
}
/*