summaryrefslogtreecommitdiff
path: root/storage/innobase/trx
diff options
context:
space:
mode:
Diffstat (limited to 'storage/innobase/trx')
-rw-r--r--storage/innobase/trx/trx0purge.cc2
-rw-r--r--storage/innobase/trx/trx0roll.cc2
-rw-r--r--storage/innobase/trx/trx0trx.cc94
3 files changed, 35 insertions, 63 deletions
diff --git a/storage/innobase/trx/trx0purge.cc b/storage/innobase/trx/trx0purge.cc
index d8495dfa7a5..ba2b73aa8b6 100644
--- a/storage/innobase/trx/trx0purge.cc
+++ b/storage/innobase/trx/trx0purge.cc
@@ -193,7 +193,7 @@ void purge_sys_t::close()
ut_ad(!trx->id);
ut_ad(trx->state == TRX_STATE_ACTIVE);
trx->state = TRX_STATE_NOT_STARTED;
- trx_free_for_background(trx);
+ trx_free(trx);
rw_lock_free(&latch);
/* rw_lock_free() already called latch.~rw_lock_t(); tame the
debug assertions when the destructor will be called once more. */
diff --git a/storage/innobase/trx/trx0roll.cc b/storage/innobase/trx/trx0roll.cc
index b3d590482e0..6874f929726 100644
--- a/storage/innobase/trx/trx0roll.cc
+++ b/storage/innobase/trx/trx0roll.cc
@@ -833,7 +833,7 @@ discard:
trx_free_at_shutdown(trx);
}
else
- trx_free_for_background(trx);
+ trx_free(trx);
}
}
}
diff --git a/storage/innobase/trx/trx0trx.cc b/storage/innobase/trx/trx0trx.cc
index 1c93f76bd60..aad5c47d42b 100644
--- a/storage/innobase/trx/trx0trx.cc
+++ b/storage/innobase/trx/trx0trx.cc
@@ -431,49 +431,10 @@ trx_t *trx_create()
}
/**
-Release a trx_t instance back to the pool.
-@param trx the instance to release. */
-static
-void
-trx_free(trx_t*& trx)
-{
- mutex_enter(&trx_sys.mutex);
- UT_LIST_REMOVE(trx_sys.trx_list, trx);
- mutex_exit(&trx_sys.mutex);
-
- assert_trx_is_free(trx);
-
- trx_sys.rw_trx_hash.put_pins(trx);
- trx->mysql_thd = 0;
- trx->mysql_log_file_name = 0;
-
- // FIXME: We need to avoid this heap free/alloc for each commit.
- if (trx->autoinc_locks != NULL) {
- ut_ad(ib_vector_is_empty(trx->autoinc_locks));
- /* We allocated a dedicated heap for the vector. */
- ib_vector_free(trx->autoinc_locks);
- trx->autoinc_locks = NULL;
- }
-
- trx->mod_tables.clear();
-
- ut_ad(!trx->read_view.is_open());
- trx->read_view.close();
-
- /* trx locking state should have been reset before returning trx
- to pool */
- ut_ad(trx->will_lock == 0);
-
- trx_pools->mem_free(trx);
-
- trx = NULL;
-}
-
-/** Check state of transaction before freeing it.
-@param trx trx object to validate */
-static
-void
-trx_validate_state_before_free(trx_t* trx)
+ Release a trx_t instance back to the pool.
+ @param trx the instance to release.
+*/
+void trx_free(trx_t*& trx)
{
ut_ad(!trx->declared_to_be_inside_innodb);
ut_ad(!trx->n_mysql_tables_in_use);
@@ -510,16 +471,37 @@ trx_validate_state_before_free(trx_t* trx)
trx->dict_operation = TRX_DICT_OP_NONE;
assert_trx_is_inactive(trx);
-}
-/** Free a transaction that was allocated by background or user threads.
-@param trx trx object to free */
-void
-trx_free_for_background(trx_t* trx)
-{
- trx_validate_state_before_free(trx);
+ mutex_enter(&trx_sys.mutex);
+ UT_LIST_REMOVE(trx_sys.trx_list, trx);
+ mutex_exit(&trx_sys.mutex);
- trx_free(trx);
+ assert_trx_is_free(trx);
+
+ trx_sys.rw_trx_hash.put_pins(trx);
+ trx->mysql_thd = 0;
+ trx->mysql_log_file_name = 0;
+
+ // FIXME: We need to avoid this heap free/alloc for each commit.
+ if (trx->autoinc_locks != NULL) {
+ ut_ad(ib_vector_is_empty(trx->autoinc_locks));
+ /* We allocated a dedicated heap for the vector. */
+ ib_vector_free(trx->autoinc_locks);
+ trx->autoinc_locks = NULL;
+ }
+
+ trx->mod_tables.clear();
+
+ ut_ad(!trx->read_view.is_open());
+ trx->read_view.close();
+
+ /* trx locking state should have been reset before returning trx
+ to pool */
+ ut_ad(trx->will_lock == 0);
+
+ trx_pools->mem_free(trx);
+
+ trx = NULL;
}
/** At shutdown, frees a transaction object. */
@@ -573,16 +555,6 @@ void trx_disconnect_prepared(trx_t *trx)
trx->will_lock= 0;
}
-/**
- Free a transaction object for MySQL
- @param[in,out] trx transaction
-*/
-void trx_free_for_mysql(trx_t *trx)
-{
- ut_ad(trx->mysql_thd);
- trx_free_for_background(trx);
-}
-
/****************************************************************//**
Resurrect the table locks for a resurrected transaction. */
static