diff options
author | Amitay Isaacs <amitay@gmail.com> | 2016-07-25 15:41:34 +1000 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2016-07-28 05:00:17 +0200 |
commit | 3314a09aafaa90adc5503c08baa4d6f965a2b7c5 (patch) | |
tree | a0babe09a874624fe66e875a7efae5a987062b4b /ctdb | |
parent | 47c400f42cc1eb72e134aefdb24e6dca70d71cad (diff) | |
download | samba-3314a09aafaa90adc5503c08baa4d6f965a2b7c5.tar.gz |
ctdb-daemon: Drop implementation of global transaction controls
These were used in serial recovery and for restoring databases using
older ctdb tool. New code uses database specific transaction controls.
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Martin Schwenke <martin@meltin.net>
Diffstat (limited to 'ctdb')
-rw-r--r-- | ctdb/include/ctdb_private.h | 4 | ||||
-rw-r--r-- | ctdb/server/ctdb_control.c | 9 | ||||
-rw-r--r-- | ctdb/server/ctdb_freeze.c | 100 |
3 files changed, 3 insertions, 110 deletions
diff --git a/ctdb/include/ctdb_private.h b/ctdb/include/ctdb_private.h index 5d7275e5bb8..cf30efdddcf 100644 --- a/ctdb/include/ctdb_private.h +++ b/ctdb/include/ctdb_private.h @@ -635,10 +635,6 @@ int32_t ctdb_control_db_transaction_cancel(struct ctdb_context *ctdb, int32_t ctdb_control_db_transaction_commit(struct ctdb_context *ctdb, TDB_DATA indata); -int32_t ctdb_control_transaction_start(struct ctdb_context *ctdb, uint32_t id); -int32_t ctdb_control_transaction_cancel(struct ctdb_context *ctdb); -int32_t ctdb_control_transaction_commit(struct ctdb_context *ctdb, uint32_t id); - int32_t ctdb_control_wipe_database(struct ctdb_context *ctdb, TDB_DATA indata); bool ctdb_db_frozen(struct ctdb_db_context *ctdb_db); diff --git a/ctdb/server/ctdb_control.c b/ctdb/server/ctdb_control.c index ea68bbfade4..f01815c93b1 100644 --- a/ctdb/server/ctdb_control.c +++ b/ctdb/server/ctdb_control.c @@ -439,12 +439,10 @@ static int32_t ctdb_control_dispatch(struct ctdb_context *ctdb, return ctdb_control_send_gratious_arp(ctdb, indata); case CTDB_CONTROL_TRANSACTION_START: - CHECK_CONTROL_DATA_SIZE(sizeof(uint32_t)); - return ctdb_control_transaction_start(ctdb, *(uint32_t *)indata.dptr); + return control_not_implemented("TRANSACTION_START", NULL); case CTDB_CONTROL_TRANSACTION_COMMIT: - CHECK_CONTROL_DATA_SIZE(sizeof(uint32_t)); - return ctdb_control_transaction_commit(ctdb, *(uint32_t *)indata.dptr); + return control_not_implemented("TRANSACTION_COMMIT", NULL); case CTDB_CONTROL_WIPE_DATABASE: CHECK_CONTROL_DATA_SIZE(sizeof(struct ctdb_transdb)); @@ -573,8 +571,7 @@ static int32_t ctdb_control_dispatch(struct ctdb_context *ctdb, return control_not_implemented("GET_DB_PRIORITY", ""); case CTDB_CONTROL_TRANSACTION_CANCEL: - CHECK_CONTROL_DATA_SIZE(0); - return ctdb_control_transaction_cancel(ctdb); + return control_not_implemented("TRANSACTION_CANCEL", NULL); case CTDB_CONTROL_REGISTER_NOTIFY: return ctdb_control_register_notify(ctdb, client_id, indata); diff --git a/ctdb/server/ctdb_freeze.c b/ctdb/server/ctdb_freeze.c index f198652065a..2666013744b 100644 --- a/ctdb/server/ctdb_freeze.c +++ b/ctdb/server/ctdb_freeze.c @@ -811,106 +811,6 @@ int32_t ctdb_control_db_transaction_commit(struct ctdb_context *ctdb, } /* - start a transaction on all databases - used for recovery - */ -int32_t ctdb_control_transaction_start(struct ctdb_context *ctdb, uint32_t id) -{ - struct db_start_transaction_state state; - int ret; - - if (!ctdb_db_all_frozen(ctdb)) { - DEBUG(DEBUG_ERR, (__location__ - " failing transaction start while not frozen\n")); - return -1; - } - - state.transaction_id = id; - state.transaction_started = ctdb->freeze_transaction_started; - - ret = ctdb_db_iterator(ctdb, db_start_transaction, &state); - if (ret != 0) { - return -1; - } - - ctdb->freeze_transaction_started = true; - ctdb->freeze_transaction_id = id; - - return 0; -} - -/* - cancel a transaction for all databases - used for recovery - */ -int32_t ctdb_control_transaction_cancel(struct ctdb_context *ctdb) -{ - DEBUG(DEBUG_ERR,(__location__ " recovery transaction cancelled called\n")); - - ctdb_db_iterator(ctdb, db_cancel_transaction, NULL); - - ctdb->freeze_transaction_started = false; - - return 0; -} - -/* - commit transactions on all databases - */ -int32_t ctdb_control_transaction_commit(struct ctdb_context *ctdb, uint32_t id) -{ - struct db_commit_transaction_state state; - int i; - int healthy_nodes = 0; - int ret; - - if (!ctdb_db_all_frozen(ctdb)) { - DEBUG(DEBUG_ERR, (__location__ - " failing transaction commit while not frozen\n")); - return -1; - } - - if (!ctdb->freeze_transaction_started) { - DEBUG(DEBUG_ERR,(__location__ " transaction not started\n")); - return -1; - } - - if (id != ctdb->freeze_transaction_id) { - DEBUG(DEBUG_ERR,(__location__ " incorrect transaction id 0x%x in commit\n", id)); - return -1; - } - - DEBUG(DEBUG_DEBUG,(__location__ " num_nodes[%d]\n", ctdb->num_nodes)); - for (i=0; i < ctdb->num_nodes; i++) { - DEBUG(DEBUG_DEBUG,(__location__ " node[%d].flags[0x%X]\n", - i, ctdb->nodes[i]->flags)); - if (ctdb->nodes[i]->flags == 0) { - healthy_nodes++; - } - } - DEBUG(DEBUG_INFO,(__location__ " healthy_nodes[%d]\n", healthy_nodes)); - - state.transaction_id = id; - state.healthy_nodes = healthy_nodes; - - ret = ctdb_db_iterator(ctdb, db_commit_transaction, &state); - if (ret != 0) { - DEBUG(DEBUG_ERR, ("Cancel all transactions\n")); - goto fail; - } - - ctdb->freeze_transaction_started = false; - ctdb->freeze_transaction_id = 0; - - return 0; - -fail: - /* cancel any pending transactions */ - ctdb_db_iterator(ctdb, db_cancel_transaction, NULL); - ctdb->freeze_transaction_started = false; - - return -1; -} - -/* wipe a database - only possible when in a frozen transaction */ int32_t ctdb_control_wipe_database(struct ctdb_context *ctdb, TDB_DATA indata) |