diff options
author | Stefan Metzmacher <metze@samba.org> | 2009-12-07 13:19:33 +0100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2009-12-16 08:03:56 +0100 |
commit | 9069d3a7fb013a87c1b4e4c0a83651d3921e9955 (patch) | |
tree | 144dcb6fd2fcaf444b7d4e2d948fbe469415151e /ctdb | |
parent | 8fbb5b7915c7881f776d9a1828554d5c54c3cacb (diff) | |
download | samba-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.c | 33 |
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; } /* |