mirror of
https://github.com/MariaDB/server.git
synced 2025-01-26 00:34:18 +01:00
Merge r1239 from
branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
This commit is contained in:
parent
8ef66e659b
commit
4227e52dc1
42 changed files with 87 additions and 580 deletions
|
@ -802,9 +802,7 @@ buf_awe_map_page_to_frame(
|
|||
{
|
||||
buf_block_t* bck;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(buf_pool->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(block);
|
||||
|
||||
if (block->frame) {
|
||||
|
@ -900,9 +898,7 @@ buf_block_make_young(
|
|||
/*=================*/
|
||||
buf_block_t* block) /* in: block to make younger */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!mutex_own(&(buf_pool->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
/* Note that we read freed_page_clock's without holding any mutex:
|
||||
this is allowed since the result is used only in heuristics */
|
||||
|
@ -1635,10 +1631,9 @@ buf_page_init(
|
|||
in units of a page */
|
||||
buf_block_t* block) /* in: block to init */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
|
||||
ut_ad(mutex_own(&(buf_pool->mutex)));
|
||||
ut_ad(mutex_own(&(block->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_a(block->state != BUF_BLOCK_FILE_PAGE);
|
||||
|
||||
/* Set the state of the block */
|
||||
|
|
|
@ -48,10 +48,7 @@ buf_flush_insert_into_flush_list(
|
|||
/*=============================*/
|
||||
buf_block_t* block) /* in: block which is modified */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(buf_pool->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
ut_a(block->state == BUF_BLOCK_FILE_PAGE);
|
||||
|
||||
ut_ad((UT_LIST_GET_FIRST(buf_pool->flush_list) == NULL)
|
||||
|
@ -77,9 +74,7 @@ buf_flush_insert_sorted_into_flush_list(
|
|||
buf_block_t* prev_b;
|
||||
buf_block_t* b;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(buf_pool->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
prev_b = NULL;
|
||||
b = UT_LIST_GET_FIRST(buf_pool->flush_list);
|
||||
|
@ -111,10 +106,8 @@ buf_flush_ready_for_replace(
|
|||
buf_block_t* block) /* in: buffer control block, must be in state
|
||||
BUF_BLOCK_FILE_PAGE and in the LRU list */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(buf_pool->mutex)));
|
||||
ut_ad(mutex_own(&block->mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
if (block->state != BUF_BLOCK_FILE_PAGE) {
|
||||
ut_print_timestamp(stderr);
|
||||
fprintf(stderr,
|
||||
|
@ -147,10 +140,8 @@ buf_flush_ready_for_flush(
|
|||
BUF_BLOCK_FILE_PAGE */
|
||||
ulint flush_type)/* in: BUF_FLUSH_LRU or BUF_FLUSH_LIST */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(buf_pool->mutex)));
|
||||
ut_ad(mutex_own(&(block->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_a(block->state == BUF_BLOCK_FILE_PAGE);
|
||||
|
||||
if ((ut_dulint_cmp(block->oldest_modification, ut_dulint_zero) > 0)
|
||||
|
|
|
@ -549,9 +549,7 @@ buf_LRU_old_adjust_len(void)
|
|||
ulint new_len;
|
||||
|
||||
ut_a(buf_pool->LRU_old);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(buf_pool->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(3 * (BUF_LRU_OLD_MIN_LEN / 8) > BUF_LRU_OLD_TOLERANCE + 5);
|
||||
|
||||
for (;;) {
|
||||
|
@ -593,6 +591,7 @@ buf_LRU_old_init(void)
|
|||
{
|
||||
buf_block_t* block;
|
||||
|
||||
ut_ad(mutex_own(&(buf_pool->mutex)));
|
||||
ut_a(UT_LIST_GET_LEN(buf_pool->LRU) == BUF_LRU_OLD_MIN_LEN);
|
||||
|
||||
/* We first initialize all blocks in the LRU list as old and then use
|
||||
|
@ -624,9 +623,7 @@ buf_LRU_remove_block(
|
|||
{
|
||||
ut_ad(buf_pool);
|
||||
ut_ad(block);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(buf_pool->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
ut_a(block->state == BUF_BLOCK_FILE_PAGE);
|
||||
ut_a(block->in_LRU_list);
|
||||
|
@ -690,9 +687,7 @@ buf_LRU_add_block_to_end_low(
|
|||
|
||||
ut_ad(buf_pool);
|
||||
ut_ad(block);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(buf_pool->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
ut_a(block->state == BUF_BLOCK_FILE_PAGE);
|
||||
|
||||
|
@ -755,9 +750,7 @@ buf_LRU_add_block_low(
|
|||
|
||||
ut_ad(buf_pool);
|
||||
ut_ad(block);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(buf_pool->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
ut_a(block->state == BUF_BLOCK_FILE_PAGE);
|
||||
ut_a(!block->in_LRU_list);
|
||||
|
@ -858,10 +851,9 @@ buf_LRU_block_free_non_file_page(
|
|||
/*=============================*/
|
||||
buf_block_t* block) /* in: block, must not contain a file page */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
|
||||
ut_ad(mutex_own(&(buf_pool->mutex)));
|
||||
ut_ad(mutex_own(&block->mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(block);
|
||||
|
||||
ut_a((block->state == BUF_BLOCK_MEMORY)
|
||||
|
@ -898,10 +890,8 @@ buf_LRU_block_remove_hashed_page(
|
|||
be in a state where it can be freed; there
|
||||
may or may not be a hash index to the page */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(buf_pool->mutex)));
|
||||
ut_ad(mutex_own(&block->mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(block);
|
||||
|
||||
ut_a(block->state == BUF_BLOCK_FILE_PAGE);
|
||||
|
@ -961,10 +951,9 @@ buf_LRU_block_free_hashed_page(
|
|||
buf_block_t* block) /* in: block, must contain a file page and
|
||||
be in a state where it can be freed */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(buf_pool->mutex)));
|
||||
ut_ad(mutex_own(&block->mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
ut_a(block->state == BUF_BLOCK_REMOVE_HASH);
|
||||
|
||||
block->state = BUF_BLOCK_MEMORY;
|
||||
|
|
|
@ -86,9 +86,7 @@ dict_hdr_flush_row_id(void)
|
|||
dulint id;
|
||||
mtr_t mtr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
id = dict_sys->row_id;
|
||||
|
||||
|
|
|
@ -212,9 +212,7 @@ dict_build_table_def_step(
|
|||
ulint i;
|
||||
ulint row_len;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
table = node->table;
|
||||
|
||||
|
@ -312,9 +310,7 @@ dict_create_sys_indexes_tuple(
|
|||
dfield_t* dfield;
|
||||
byte* ptr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(index && heap);
|
||||
|
||||
sys_indexes = dict_sys->sys_indexes;
|
||||
|
@ -512,9 +508,7 @@ dict_build_index_def_step(
|
|||
dtuple_t* row;
|
||||
trx_t* trx;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
trx = thr_get_trx(thr);
|
||||
|
||||
|
@ -585,9 +579,7 @@ dict_create_index_tree_step(
|
|||
btr_pcur_t pcur;
|
||||
mtr_t mtr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
index = node->index;
|
||||
table = node->table;
|
||||
|
@ -642,10 +634,7 @@ dict_drop_index_tree(
|
|||
byte* ptr;
|
||||
ulint len;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
ut_a(!dict_table_is_comp(dict_sys->sys_indexes));
|
||||
ptr = rec_get_nth_field_old(rec, DICT_SYS_INDEXES_PAGE_NO_FIELD, &len);
|
||||
|
||||
|
@ -718,10 +707,7 @@ dict_truncate_index_tree(
|
|||
ulint comp;
|
||||
dict_index_t* index;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
ut_a(!dict_table_is_comp(dict_sys->sys_indexes));
|
||||
rec = btr_pcur_get_rec(pcur);
|
||||
ptr = rec_get_nth_field_old(rec, DICT_SYS_INDEXES_PAGE_NO_FIELD, &len);
|
||||
|
@ -907,9 +893,7 @@ dict_create_table_step(
|
|||
trx_t* trx;
|
||||
|
||||
ut_ad(thr);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
trx = thr_get_trx(thr);
|
||||
|
||||
|
@ -1016,9 +1000,7 @@ dict_create_index_step(
|
|||
trx_t* trx;
|
||||
|
||||
ut_ad(thr);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
trx = thr_get_trx(thr);
|
||||
|
||||
|
@ -1440,9 +1422,7 @@ dict_create_add_foreigns_to_dictionary(
|
|||
ulint number = start_id + 1;
|
||||
ulint error;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (NULL == dict_table_get_low("SYS_FOREIGN")) {
|
||||
fprintf(stderr,
|
||||
|
|
|
@ -689,9 +689,7 @@ dict_table_get_on_id(
|
|||
if we are doing a rollback to handle an error in TABLE
|
||||
CREATE, for example, we already have the mutex! */
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
return(dict_table_get_on_id_low(table_id));
|
||||
}
|
||||
|
@ -854,9 +852,7 @@ dict_table_add_to_cache(
|
|||
ulint row_len;
|
||||
|
||||
ut_ad(table);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(table->n_def == table->n_cols - DATA_N_SYS_COLS);
|
||||
ut_ad(table->magic_n == DICT_TABLE_MAGIC_N);
|
||||
ut_ad(table->cached == FALSE);
|
||||
|
@ -1003,9 +999,7 @@ dict_table_rename_in_cache(
|
|||
ibool success;
|
||||
|
||||
ut_ad(table);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
old_size = mem_heap_get_size(table->heap);
|
||||
|
||||
|
@ -1209,9 +1203,7 @@ dict_table_change_id_in_cache(
|
|||
dulint new_id) /* in: new id to set */
|
||||
{
|
||||
ut_ad(table);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(table->magic_n == DICT_TABLE_MAGIC_N);
|
||||
|
||||
/* Remove the table from the hash table of id's */
|
||||
|
@ -1238,9 +1230,7 @@ dict_table_remove_from_cache(
|
|||
ulint size;
|
||||
|
||||
ut_ad(table);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(table->magic_n == DICT_TABLE_MAGIC_N);
|
||||
|
||||
#if 0
|
||||
|
@ -1354,9 +1344,7 @@ dict_index_add_to_cache(
|
|||
ulint i;
|
||||
|
||||
ut_ad(index);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(index->n_def == index->n_fields);
|
||||
ut_ad(index->magic_n == DICT_INDEX_MAGIC_N);
|
||||
|
||||
|
@ -1452,9 +1440,7 @@ dict_index_remove_from_cache(
|
|||
ut_ad(table && index);
|
||||
ut_ad(table->magic_n == DICT_TABLE_MAGIC_N);
|
||||
ut_ad(index->magic_n == DICT_INDEX_MAGIC_N);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
rw_lock_free(&index->lock);
|
||||
|
||||
|
@ -1484,9 +1470,7 @@ dict_index_find_cols(
|
|||
|
||||
ut_ad(table && index);
|
||||
ut_ad(table->magic_n == DICT_TABLE_MAGIC_N);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
for (i = 0; i < index->n_fields; i++) {
|
||||
ulint j;
|
||||
|
@ -1648,9 +1632,7 @@ dict_index_build_internal_clust(
|
|||
|
||||
ut_ad(table && index);
|
||||
ut_ad(index->type & DICT_CLUSTERED);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(table->magic_n == DICT_TABLE_MAGIC_N);
|
||||
|
||||
/* Create a new index object with certainly enough fields */
|
||||
|
@ -1803,9 +1785,7 @@ dict_index_build_internal_non_clust(
|
|||
|
||||
ut_ad(table && index);
|
||||
ut_ad(0 == (index->type & DICT_CLUSTERED));
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(table->magic_n == DICT_TABLE_MAGIC_N);
|
||||
|
||||
/* The clustered index should be the first in the list of indexes */
|
||||
|
@ -1918,9 +1898,7 @@ dict_foreign_remove_from_cache(
|
|||
/*===========================*/
|
||||
dict_foreign_t* foreign) /* in, own: foreign constraint */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_a(foreign);
|
||||
|
||||
if (foreign->referenced_table) {
|
||||
|
@ -1951,9 +1929,7 @@ dict_foreign_find(
|
|||
{
|
||||
dict_foreign_t* foreign;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
foreign = UT_LIST_GET_FIRST(table->foreign_list);
|
||||
|
||||
|
@ -2113,9 +2089,7 @@ dict_foreign_add_to_cache(
|
|||
ibool added_to_referenced_list= FALSE;
|
||||
FILE* ef = dict_foreign_err_file;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
for_table = dict_table_check_if_in_cache_low(
|
||||
foreign->foreign_table_name);
|
||||
|
@ -2794,9 +2768,7 @@ dict_create_foreign_constraints_low(
|
|||
const char* column_names[500];
|
||||
const char* referenced_table_name;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
table = dict_table_get_low(name);
|
||||
|
||||
|
@ -3425,9 +3397,7 @@ dict_foreign_parse_drop_constraints(
|
|||
str = dict_strip_comments(*(trx->mysql_query_str));
|
||||
ptr = str;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
loop:
|
||||
ptr = dict_scan_to(ptr, "DROP");
|
||||
|
||||
|
@ -3864,9 +3834,7 @@ dict_foreign_print_low(
|
|||
{
|
||||
ulint i;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
fprintf(stderr, " FOREIGN KEY CONSTRAINT %s: %s (",
|
||||
foreign->id, foreign->foreign_table_name);
|
||||
|
@ -3931,9 +3899,7 @@ dict_table_print_low(
|
|||
dict_foreign_t* foreign;
|
||||
ulint i;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
dict_update_statistics_low(table, TRUE);
|
||||
|
||||
|
@ -3989,9 +3955,7 @@ dict_col_print_low(
|
|||
{
|
||||
dtype_t type;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
dict_col_copy_type(col, &type);
|
||||
fprintf(stderr, "%s: ", dict_table_get_col_name(table,
|
||||
|
@ -4011,9 +3975,7 @@ dict_index_print_low(
|
|||
ib_longlong n_vals;
|
||||
ulint i;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (index->n_user_defined_cols > 0) {
|
||||
n_vals = index->stat_n_diff_key_vals[
|
||||
|
@ -4061,9 +4023,8 @@ dict_field_print_low(
|
|||
/*=================*/
|
||||
dict_field_t* field) /* in: field */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
fprintf(stderr, " %s", field->name);
|
||||
|
||||
if (field->prefix_len != 0) {
|
||||
|
|
|
@ -67,9 +67,7 @@ dict_get_first_table_name_in_db(
|
|||
ulint len;
|
||||
mtr_t mtr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
heap = mem_heap_create(1000);
|
||||
|
||||
|
@ -353,9 +351,7 @@ dict_load_columns(
|
|||
ulint i;
|
||||
mtr_t mtr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
mtr_start(&mtr);
|
||||
|
||||
|
@ -478,11 +474,7 @@ dict_load_fields(
|
|||
ulint i;
|
||||
mtr_t mtr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
UT_NOT_USED(table);
|
||||
|
||||
mtr_start(&mtr);
|
||||
|
||||
|
@ -586,9 +578,7 @@ dict_load_indexes(
|
|||
dulint id;
|
||||
mtr_t mtr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if ((ut_dulint_get_high(table->id) == 0)
|
||||
&& (ut_dulint_get_low(table->id) < DICT_HDR_FIRST_ID)) {
|
||||
|
@ -754,9 +744,7 @@ dict_load_table(
|
|||
ulint err;
|
||||
mtr_t mtr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
heap = mem_heap_create(1000);
|
||||
|
||||
|
@ -920,9 +908,7 @@ dict_load_table_on_id(
|
|||
dict_table_t* table;
|
||||
mtr_t mtr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
/* NOTE that the operation of this function is protected by
|
||||
the dictionary mutex, and therefore no deadlocks can occur
|
||||
|
@ -1003,9 +989,7 @@ dict_load_sys_table(
|
|||
{
|
||||
mem_heap_t* heap;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
heap = mem_heap_create(1000);
|
||||
|
||||
|
@ -1035,9 +1019,7 @@ dict_load_foreign_cols(
|
|||
ulint i;
|
||||
mtr_t mtr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
foreign->foreign_col_names = mem_heap_alloc(
|
||||
foreign->heap, foreign->n_fields * sizeof(void*));
|
||||
|
@ -1113,9 +1095,7 @@ dict_load_foreign(
|
|||
ulint n_fields_and_type;
|
||||
mtr_t mtr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
heap2 = mem_heap_create(1000);
|
||||
|
||||
|
@ -1243,9 +1223,7 @@ dict_load_foreigns(
|
|||
ulint err;
|
||||
mtr_t mtr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
sys_foreign = dict_table_get_low("SYS_FOREIGN");
|
||||
|
||||
|
|
|
@ -409,9 +409,7 @@ fil_space_is_flushed(
|
|||
{
|
||||
fil_node_t* node;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(fil_system->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
node = UT_LIST_GET_FIRST(space->chain);
|
||||
|
||||
|
@ -514,9 +512,7 @@ fil_node_open_file(
|
|||
ulint space_id;
|
||||
#endif /* !UNIV_HOTBACKUP */
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(system->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_a(node->n_pending == 0);
|
||||
ut_a(node->open == FALSE);
|
||||
|
||||
|
@ -660,9 +656,7 @@ fil_node_close_file(
|
|||
ibool ret;
|
||||
|
||||
ut_ad(node && system);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(system->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_a(node->open);
|
||||
ut_a(node->n_pending == 0);
|
||||
ut_a(node->n_pending_flushes == 0);
|
||||
|
@ -705,9 +699,8 @@ fil_try_to_close_file_in_LRU(
|
|||
fil_system_t* system = fil_system;
|
||||
fil_node_t* node;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(system->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
node = UT_LIST_GET_LAST(system->LRU);
|
||||
|
||||
if (print_info) {
|
||||
|
@ -765,9 +758,7 @@ fil_mutex_enter_and_prepare_for_io(
|
|||
ulint count = 0;
|
||||
ulint count2 = 0;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!mutex_own(&(system->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
retry:
|
||||
mutex_enter(&(system->mutex));
|
||||
|
||||
|
@ -881,9 +872,7 @@ fil_node_free(
|
|||
fil_space_t* space) /* in: space where the file node is chained */
|
||||
{
|
||||
ut_ad(node && system && space);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(system->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_a(node->magic_n == FIL_NODE_MAGIC_N);
|
||||
ut_a(node->n_pending == 0);
|
||||
|
||||
|
@ -3870,9 +3859,7 @@ fil_node_prepare_for_io(
|
|||
fil_space_t* space) /* in: space */
|
||||
{
|
||||
ut_ad(node && system && space);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(system->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (system->n_open > system->max_n_open + 5) {
|
||||
ut_print_timestamp(stderr);
|
||||
|
@ -3917,9 +3904,7 @@ fil_node_complete_io(
|
|||
{
|
||||
ut_ad(node);
|
||||
ut_ad(system);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(system->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
ut_a(node->n_pending > 0);
|
||||
|
||||
|
|
|
@ -2045,11 +2045,9 @@ fseg_create_general(
|
|||
mtr);
|
||||
}
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!mutex_own(&kernel_mutex)
|
||||
|| mtr_memo_contains(mtr, fil_space_get_latch(space),
|
||||
MTR_MEMO_X_LOCK));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
latch = fil_space_get_latch(space);
|
||||
|
||||
mtr_x_lock(latch, mtr);
|
||||
|
@ -2205,11 +2203,10 @@ fseg_n_reserved_pages(
|
|||
|
||||
space = buf_frame_get_space_id(header);
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!mutex_own(&kernel_mutex)
|
||||
|| mtr_memo_contains(mtr, fil_space_get_latch(space),
|
||||
MTR_MEMO_X_LOCK));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
mtr_x_lock(fil_space_get_latch(space), mtr);
|
||||
|
||||
inode = fseg_inode_get(header, mtr);
|
||||
|
@ -2601,11 +2598,9 @@ fseg_alloc_free_page_general(
|
|||
|
||||
space = buf_frame_get_space_id(seg_header);
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!mutex_own(&kernel_mutex)
|
||||
|| mtr_memo_contains(mtr, fil_space_get_latch(space),
|
||||
MTR_MEMO_X_LOCK));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
latch = fil_space_get_latch(space);
|
||||
|
||||
mtr_x_lock(latch, mtr);
|
||||
|
@ -2751,11 +2746,9 @@ fsp_reserve_free_extents(
|
|||
ulint n_pages_added;
|
||||
|
||||
ut_ad(mtr);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!mutex_own(&kernel_mutex)
|
||||
|| mtr_memo_contains(mtr, fil_space_get_latch(space),
|
||||
MTR_MEMO_X_LOCK));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
*n_reserved = n_ext;
|
||||
|
||||
latch = fil_space_get_latch(space);
|
||||
|
@ -2853,9 +2846,8 @@ fsp_get_available_space_in_free_extents(
|
|||
rw_lock_t* latch;
|
||||
mtr_t mtr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
mtr_start(&mtr);
|
||||
|
||||
latch = fil_space_get_latch(space);
|
||||
|
@ -3113,11 +3105,10 @@ fseg_free_page(
|
|||
{
|
||||
fseg_inode_t* seg_inode;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!mutex_own(&kernel_mutex)
|
||||
|| mtr_memo_contains(mtr, fil_space_get_latch(space),
|
||||
MTR_MEMO_X_LOCK));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
mtr_x_lock(fil_space_get_latch(space), mtr);
|
||||
|
||||
seg_inode = fseg_inode_get(seg_header, mtr);
|
||||
|
@ -3222,11 +3213,10 @@ fseg_free_step(
|
|||
|
||||
space = buf_frame_get_space_id(header);
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!mutex_own(&kernel_mutex)
|
||||
|| mtr_memo_contains(mtr, fil_space_get_latch(space),
|
||||
MTR_MEMO_X_LOCK));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
mtr_x_lock(fil_space_get_latch(space), mtr);
|
||||
|
||||
descr = xdes_get_descriptor(space, buf_frame_get_page_no(header), mtr);
|
||||
|
@ -3297,11 +3287,10 @@ fseg_free_step_not_header(
|
|||
|
||||
space = buf_frame_get_space_id(header);
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!mutex_own(&kernel_mutex)
|
||||
|| mtr_memo_contains(mtr, fil_space_get_latch(space),
|
||||
MTR_MEMO_X_LOCK));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
mtr_x_lock(fil_space_get_latch(space), mtr);
|
||||
|
||||
inode = fseg_inode_get(header, mtr);
|
||||
|
|
11
ha/ha0ha.c
11
ha/ha0ha.c
|
@ -96,9 +96,8 @@ ha_insert_for_fold(
|
|||
ulint hash;
|
||||
|
||||
ut_ad(table && data);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!table->mutexes || mutex_own(hash_get_mutex(table, fold)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
hash = hash_calc_hash(fold, table);
|
||||
|
||||
cell = hash_get_nth_cell(table, hash);
|
||||
|
@ -194,9 +193,8 @@ ha_delete(
|
|||
{
|
||||
ha_node_t* node;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!table->mutexes || mutex_own(hash_get_mutex(table, fold)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
node = ha_search_with_data(table, fold, data);
|
||||
|
||||
ut_a(node);
|
||||
|
@ -218,9 +216,7 @@ ha_search_and_update_if_found(
|
|||
{
|
||||
ha_node_t* node;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!table->mutexes || mutex_own(hash_get_mutex(table, fold)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
node = ha_search_with_data(table, fold, data);
|
||||
|
||||
|
@ -248,9 +244,8 @@ ha_remove_all_nodes_to_page(
|
|||
{
|
||||
ha_node_t* node;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!table->mutexes || mutex_own(hash_get_mutex(table, fold)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
node = ha_chain_get_first(table, fold);
|
||||
|
||||
while (node) {
|
||||
|
|
|
@ -417,9 +417,7 @@ ibuf_data_sizes_update(
|
|||
{
|
||||
ulint old_size;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&ibuf_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
old_size = data->size;
|
||||
|
||||
|
@ -1576,9 +1574,7 @@ ibuf_data_enough_free_for_insert(
|
|||
/* out: TRUE if enough free pages in list */
|
||||
ibuf_data_t* data) /* in: ibuf data for the space */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&ibuf_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
/* We want a big margin of free pages, because a B-tree can sometimes
|
||||
grow in size also if records are deleted from it, as the node pointers
|
||||
|
@ -1604,16 +1600,9 @@ ibuf_data_too_much_free(
|
|||
/* out: TRUE if enough free pages in list */
|
||||
ibuf_data_t* data) /* in: ibuf data for the space */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&ibuf_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (data->free_list_len >= 3 + data->size / 2 + 3 * data->height) {
|
||||
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
return(FALSE);
|
||||
return(data->free_list_len >= 3 + data->size / 2 + 3 * data->height);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
|
@ -3451,9 +3440,7 @@ ibuf_validate_low(void)
|
|||
ibuf_data_t* data;
|
||||
ulint sum_sizes;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&ibuf_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
sum_sizes = 0;
|
||||
|
||||
|
|
|
@ -128,9 +128,7 @@ buf_pool_clock_tic(void)
|
|||
/*====================*/
|
||||
/* out: new clock value */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(buf_pool->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
buf_pool->ulint_clock++;
|
||||
|
||||
|
@ -456,7 +454,7 @@ buf_frame_modify_clock_inc(
|
|||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad((mutex_own(&(buf_pool->mutex)) && (block->buf_fix_count == 0))
|
||||
|| rw_lock_own(&(block->lock), RW_LOCK_EXCLUSIVE));
|
||||
#endif /*UNIV_SYNC_DEBUG */
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
UT_DULINT_INC(block->modify_clock);
|
||||
|
||||
|
@ -513,14 +511,12 @@ buf_block_buf_fix_inc_debug(
|
|||
const char* file __attribute__ ((unused)), /* in: file name */
|
||||
ulint line __attribute__ ((unused))) /* in: line */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ibool ret;
|
||||
|
||||
ret = rw_lock_s_lock_func_nowait(&(block->debug_latch), file, line);
|
||||
|
||||
ut_ad(ret == TRUE);
|
||||
ut_ad(mutex_own(&block->mutex));
|
||||
#endif
|
||||
block->buf_fix_count++;
|
||||
}
|
||||
#else /* UNIV_SYNC_DEBUG */
|
||||
|
@ -532,9 +528,8 @@ buf_block_buf_fix_inc(
|
|||
/*==================*/
|
||||
buf_block_t* block) /* in: block to bufferfix */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&block->mutex));
|
||||
#endif
|
||||
|
||||
block->buf_fix_count++;
|
||||
}
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
@ -552,9 +547,7 @@ buf_page_hash_get(
|
|||
ulint fold;
|
||||
|
||||
ut_ad(buf_pool);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(buf_pool->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
/* Look for the page in the hash table */
|
||||
|
||||
|
|
|
@ -42,8 +42,8 @@ buf_flush_note_modification(
|
|||
ut_ad(block->buf_fix_count > 0);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(rw_lock_own(&(block->lock), RW_LOCK_EX));
|
||||
ut_ad(mutex_own(&(buf_pool->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(mutex_own(&(buf_pool->mutex)));
|
||||
|
||||
ut_ad(ut_dulint_cmp(mtr->start_lsn, ut_dulint_zero) != 0);
|
||||
ut_ad(mtr->modifications);
|
||||
|
|
|
@ -551,9 +551,7 @@ dict_table_check_if_in_cache_low(
|
|||
ulint table_fold;
|
||||
|
||||
ut_ad(table_name);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
/* Look for the table name in the hash table */
|
||||
table_fold = ut_fold_string(table_name);
|
||||
|
@ -576,9 +574,7 @@ dict_table_get_low(
|
|||
dict_table_t* table;
|
||||
|
||||
ut_ad(table_name);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
table = dict_table_check_if_in_cache_low(table_name);
|
||||
|
||||
|
@ -601,9 +597,7 @@ dict_table_get_on_id_low(
|
|||
dict_table_t* table;
|
||||
ulint fold;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
/* Look for the table name in the hash table */
|
||||
fold = ut_fold_dulint(table_id);
|
||||
|
|
|
@ -81,9 +81,7 @@ ha_search(
|
|||
{
|
||||
ha_node_t* node;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!table->mutexes || mutex_own(hash_get_mutex(table, fold)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
node = ha_chain_get_first(table, fold);
|
||||
|
||||
|
@ -113,9 +111,7 @@ ha_search_and_get_data(
|
|||
{
|
||||
ha_node_t* node;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!table->mutexes || mutex_own(hash_get_mutex(table, fold)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
node = ha_chain_get_first(table, fold);
|
||||
|
||||
|
@ -145,9 +141,7 @@ ha_search_with_data(
|
|||
{
|
||||
ha_node_t* node;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!table->mutexes || mutex_own(hash_get_mutex(table, fold)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
node = ha_chain_get_first(table, fold);
|
||||
|
||||
|
@ -177,9 +171,7 @@ ha_search_and_delete_if_found(
|
|||
{
|
||||
ha_node_t* node;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!table->mutexes || mutex_own(hash_get_mutex(table, fold)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
node = ha_search_with_data(table, fold, data);
|
||||
|
||||
|
|
|
@ -65,9 +65,7 @@ lock_clust_rec_some_has_impl(
|
|||
{
|
||||
dulint trx_id;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(index->type & DICT_CLUSTERED);
|
||||
ut_ad(page_rec_is_user_rec(rec));
|
||||
|
||||
|
|
|
@ -255,9 +255,7 @@ log_block_init(
|
|||
{
|
||||
ulint no;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
no = log_block_convert_lsn_to_no(lsn);
|
||||
|
||||
|
@ -279,9 +277,7 @@ log_block_init_in_old_format(
|
|||
{
|
||||
ulint no;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
no = log_block_convert_lsn_to_no(lsn);
|
||||
|
||||
|
|
|
@ -133,9 +133,8 @@ rw_lock_s_lock_low(
|
|||
const char* file_name, /* in: file name where lock requested */
|
||||
ulint line) /* in: line where requested */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(rw_lock_get_mutex(lock)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
/* Check if the writer field is free */
|
||||
|
||||
if (UNIV_LIKELY(lock->writer == RW_LOCK_NOT_LOCKED)) {
|
||||
|
|
|
@ -170,7 +170,16 @@ Checks that the mutex has been initialized. */
|
|||
ibool
|
||||
mutex_validate(
|
||||
/*===========*/
|
||||
mutex_t* mutex);
|
||||
const mutex_t* mutex);
|
||||
/**********************************************************************
|
||||
Checks that the current thread owns the mutex. Works only
|
||||
in the debug version. */
|
||||
|
||||
ibool
|
||||
mutex_own(
|
||||
/*======*/
|
||||
/* out: TRUE if owns */
|
||||
const mutex_t* mutex); /* in: mutex */
|
||||
#endif /* UNIV_DEBUG */
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
/**********************************************************************
|
||||
|
@ -215,15 +224,6 @@ sync_thread_levels_empty_gen(
|
|||
also purge_is_running mutex is
|
||||
allowed */
|
||||
/**********************************************************************
|
||||
Checks that the current thread owns the mutex. Works only
|
||||
in the debug version. */
|
||||
|
||||
ibool
|
||||
mutex_own(
|
||||
/*======*/
|
||||
/* out: TRUE if owns */
|
||||
mutex_t* mutex); /* in: mutex */
|
||||
/**********************************************************************
|
||||
Gets the debug information for a reserved mutex. */
|
||||
|
||||
void
|
||||
|
@ -248,7 +248,7 @@ UNIV_INLINE
|
|||
ulint
|
||||
mutex_get_lock_word(
|
||||
/*================*/
|
||||
mutex_t* mutex); /* in: mutex */
|
||||
const mutex_t* mutex); /* in: mutex */
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
/**********************************************************************
|
||||
NOT to be used outside this module except in debugging! Gets the waiters
|
||||
|
@ -258,7 +258,7 @@ ulint
|
|||
mutex_get_waiters(
|
||||
/*==============*/
|
||||
/* out: value to set */
|
||||
mutex_t* mutex); /* in: mutex */
|
||||
const mutex_t* mutex); /* in: mutex */
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
/*
|
||||
|
@ -479,13 +479,13 @@ struct mutex_struct {
|
|||
#ifdef UNIV_SYNC_DEBUG
|
||||
const char* file_name; /* File where the mutex was locked */
|
||||
ulint line; /* Line where the mutex was locked */
|
||||
os_thread_id_t thread_id; /* Debug version: The thread id of the
|
||||
thread which locked the mutex. */
|
||||
ulint level; /* Level in the global latching order */
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
const char* cfile_name;/* File name where mutex created */
|
||||
ulint cline; /* Line where created */
|
||||
#ifdef UNIV_DEBUG
|
||||
os_thread_id_t thread_id; /* The thread id of the thread
|
||||
which locked the mutex. */
|
||||
ulint magic_n;
|
||||
# define MUTEX_MAGIC_N (ulint)979585
|
||||
#endif /* UNIV_DEBUG */
|
||||
|
|
|
@ -168,9 +168,9 @@ UNIV_INLINE
|
|||
ulint
|
||||
mutex_get_lock_word(
|
||||
/*================*/
|
||||
mutex_t* mutex) /* in: mutex */
|
||||
const mutex_t* mutex) /* in: mutex */
|
||||
{
|
||||
volatile ulint* ptr; /* declared volatile to ensure that
|
||||
const volatile ulint* ptr; /* declared volatile to ensure that
|
||||
lock_word is loaded from memory */
|
||||
ut_ad(mutex);
|
||||
|
||||
|
@ -186,9 +186,9 @@ ulint
|
|||
mutex_get_waiters(
|
||||
/*==============*/
|
||||
/* out: value to set */
|
||||
mutex_t* mutex) /* in: mutex */
|
||||
const mutex_t* mutex) /* in: mutex */
|
||||
{
|
||||
volatile ulint* ptr; /* declared volatile to ensure that
|
||||
const volatile ulint* ptr; /* declared volatile to ensure that
|
||||
the value is read from memory */
|
||||
ut_ad(mutex);
|
||||
|
||||
|
@ -206,11 +206,11 @@ mutex_exit(
|
|||
/*=======*/
|
||||
mutex_t* mutex) /* in: pointer to mutex */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(mutex));
|
||||
|
||||
mutex->thread_id = ULINT_UNDEFINED;
|
||||
ut_d(mutex->thread_id = ULINT_UNDEFINED);
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
sync_thread_reset_level(mutex);
|
||||
#endif
|
||||
mutex_reset_lock_word(mutex);
|
||||
|
@ -259,6 +259,7 @@ mutex_enter_func(
|
|||
#endif /* UNIV_DEBUG && !UNIV_HOTBACKUP */
|
||||
|
||||
if (!mutex_test_and_set(mutex)) {
|
||||
ut_d(mutex->thread_id = os_thread_get_curr_id());
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
mutex_set_debug_info(mutex, file_name, line);
|
||||
#endif
|
||||
|
|
|
@ -62,9 +62,7 @@ trx_sys_get_nth_rseg(
|
|||
trx_sys_t* sys, /* in: trx system */
|
||||
ulint n) /* in: index of slot */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(kernel_mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(n < TRX_SYS_N_RSEGS);
|
||||
|
||||
return(sys->rseg_array[n]);
|
||||
|
@ -121,9 +119,7 @@ trx_sysf_rseg_get_space(
|
|||
ulint i, /* in: slot index == rseg id */
|
||||
mtr_t* mtr) /* in: mtr */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(kernel_mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(sys_header);
|
||||
ut_ad(i < TRX_SYS_N_RSEGS);
|
||||
|
||||
|
@ -146,9 +142,7 @@ trx_sysf_rseg_get_page_no(
|
|||
mtr_t* mtr) /* in: mtr */
|
||||
{
|
||||
ut_ad(sys_header);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(kernel_mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(i < TRX_SYS_N_RSEGS);
|
||||
|
||||
return(mtr_read_ulint(sys_header + TRX_SYS_RSEGS
|
||||
|
@ -168,9 +162,7 @@ trx_sysf_rseg_set_space(
|
|||
ulint space, /* in: space id */
|
||||
mtr_t* mtr) /* in: mtr */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(kernel_mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(sys_header);
|
||||
ut_ad(i < TRX_SYS_N_RSEGS);
|
||||
|
||||
|
@ -194,9 +186,7 @@ trx_sysf_rseg_set_page_no(
|
|||
slot is reset to unused */
|
||||
mtr_t* mtr) /* in: mtr */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(kernel_mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(sys_header);
|
||||
ut_ad(i < TRX_SYS_N_RSEGS);
|
||||
|
||||
|
@ -250,9 +240,7 @@ trx_get_on_id(
|
|||
{
|
||||
trx_t* trx;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(kernel_mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
trx = UT_LIST_GET_FIRST(trx_sys->trx_list);
|
||||
|
||||
|
@ -282,9 +270,7 @@ trx_list_get_min_trx_id(void)
|
|||
{
|
||||
trx_t* trx;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(kernel_mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
trx = UT_LIST_GET_LAST(trx_sys->trx_list);
|
||||
|
||||
|
@ -307,9 +293,7 @@ trx_is_active(
|
|||
{
|
||||
trx_t* trx;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(kernel_mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (ut_dulint_cmp(trx_id, trx_list_get_min_trx_id()) < 0) {
|
||||
|
||||
|
@ -346,9 +330,7 @@ trx_sys_get_new_trx_id(void)
|
|||
{
|
||||
dulint id;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
/* VERY important: after the database is started, max_trx_id value is
|
||||
divisible by TRX_SYS_TRX_ID_WRITE_MARGIN, and the following if
|
||||
|
@ -378,9 +360,7 @@ trx_sys_get_new_trx_no(void)
|
|||
/*========================*/
|
||||
/* out: new, allocated trx number */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
return(trx_sys_get_new_trx_id());
|
||||
}
|
||||
|
|
|
@ -1162,9 +1162,7 @@ lock_rec_get_next_on_page(
|
|||
ulint space;
|
||||
ulint page_no;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(lock_get_type(lock) == LOCK_REC);
|
||||
|
||||
space = lock->un_member.rec_lock.space;
|
||||
|
@ -1201,9 +1199,7 @@ lock_rec_get_first_on_page_addr(
|
|||
{
|
||||
lock_t* lock;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
lock = HASH_GET_FIRST(lock_sys->rec_hash,
|
||||
lock_rec_hash(space, page_no));
|
||||
|
@ -1261,9 +1257,7 @@ lock_rec_get_first_on_page(
|
|||
ulint space;
|
||||
ulint page_no;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
hash = buf_frame_get_lock_hash_val(ptr);
|
||||
|
||||
|
@ -1295,9 +1289,7 @@ lock_rec_get_next(
|
|||
rec_t* rec, /* in: record on a page */
|
||||
lock_t* lock) /* in: lock */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(lock_get_type(lock) == LOCK_REC);
|
||||
|
||||
if (page_rec_is_comp(rec)) {
|
||||
|
@ -1326,9 +1318,7 @@ lock_rec_get_first(
|
|||
{
|
||||
lock_t* lock;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
lock = lock_rec_get_first_on_page(rec);
|
||||
if (UNIV_LIKELY_NULL(lock)) {
|
||||
|
@ -1414,9 +1404,7 @@ lock_rec_get_prev(
|
|||
ulint page_no;
|
||||
lock_t* found_lock = NULL;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(lock_get_type(in_lock) == LOCK_REC);
|
||||
|
||||
space = in_lock->un_member.rec_lock.space;
|
||||
|
@ -1456,9 +1444,7 @@ lock_table_has(
|
|||
{
|
||||
lock_t* lock;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
/* Look for stronger locks the same trx already has on the table */
|
||||
|
||||
|
@ -1502,9 +1488,7 @@ lock_rec_has_expl(
|
|||
{
|
||||
lock_t* lock;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad((precise_mode & LOCK_MODE_MASK) == LOCK_S
|
||||
|| (precise_mode & LOCK_MODE_MASK) == LOCK_X);
|
||||
ut_ad(!(precise_mode & LOCK_INSERT_INTENTION));
|
||||
|
@ -1552,9 +1536,7 @@ lock_rec_other_has_expl_req(
|
|||
{
|
||||
lock_t* lock;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(mode == LOCK_X || mode == LOCK_S);
|
||||
ut_ad(gap == 0 || gap == LOCK_GAP);
|
||||
ut_ad(wait == 0 || wait == LOCK_WAIT);
|
||||
|
@ -1594,9 +1576,8 @@ lock_rec_other_has_conflicting(
|
|||
trx_t* trx) /* in: our transaction */
|
||||
{
|
||||
lock_t* lock;
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
lock = lock_rec_get_first(rec);
|
||||
|
||||
|
@ -1629,9 +1610,7 @@ lock_rec_find_similar_on_page(
|
|||
lock_t* lock;
|
||||
ulint heap_no;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
heap_no = rec_get_heap_no(rec, page_rec_is_comp(rec));
|
||||
lock = lock_rec_get_first_on_page(rec);
|
||||
|
@ -1665,9 +1644,7 @@ lock_sec_rec_some_has_impl_off_kernel(
|
|||
{
|
||||
page_t* page;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(!(index->type & DICT_CLUSTERED));
|
||||
ut_ad(page_rec_is_user_rec(rec));
|
||||
ut_ad(rec_offs_validate(rec, index, offsets));
|
||||
|
@ -1760,9 +1737,7 @@ lock_rec_create(
|
|||
ulint n_bits;
|
||||
ulint n_bytes;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
page = buf_frame_align(rec);
|
||||
space = buf_frame_get_space_id(page);
|
||||
|
@ -1842,9 +1817,7 @@ lock_rec_enqueue_waiting(
|
|||
lock_t* lock;
|
||||
trx_t* trx;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
/* Test if there already is some other reason to suspend thread:
|
||||
we do not enqueue a lock request if the query thread should be
|
||||
|
@ -1934,9 +1907,7 @@ lock_rec_add_to_queue(
|
|||
ulint heap_no;
|
||||
ibool somebody_waits = FALSE;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad((type_mode & (LOCK_WAIT | LOCK_GAP))
|
||||
|| ((type_mode & LOCK_MODE_MASK) != LOCK_S)
|
||||
|| !lock_rec_other_has_expl_req(LOCK_X, 0, LOCK_WAIT,
|
||||
|
@ -2017,9 +1988,7 @@ lock_rec_lock_fast(
|
|||
ulint heap_no;
|
||||
trx_t* trx;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad((LOCK_MODE_MASK & mode) != LOCK_S
|
||||
|| lock_table_has(thr_get_trx(thr), index->table, LOCK_IS));
|
||||
ut_ad((LOCK_MODE_MASK & mode) != LOCK_X
|
||||
|
@ -2102,9 +2071,7 @@ lock_rec_lock_slow(
|
|||
trx_t* trx;
|
||||
ulint err;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad((LOCK_MODE_MASK & mode) != LOCK_S
|
||||
|| lock_table_has(thr_get_trx(thr), index->table, LOCK_IS));
|
||||
ut_ad((LOCK_MODE_MASK & mode) != LOCK_X
|
||||
|
@ -2176,9 +2143,7 @@ lock_rec_lock(
|
|||
{
|
||||
ulint err;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad((LOCK_MODE_MASK & mode) != LOCK_S
|
||||
|| lock_table_has(thr_get_trx(thr), index->table, LOCK_IS));
|
||||
ut_ad((LOCK_MODE_MASK & mode) != LOCK_X
|
||||
|
@ -2216,9 +2181,7 @@ lock_rec_has_to_wait_in_queue(
|
|||
ulint page_no;
|
||||
ulint heap_no;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(lock_get_wait(wait_lock));
|
||||
ut_ad(lock_get_type(wait_lock) == LOCK_REC);
|
||||
|
||||
|
@ -2251,9 +2214,7 @@ lock_grant(
|
|||
/*=======*/
|
||||
lock_t* lock) /* in: waiting lock request */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
lock_reset_lock_and_trx_wait(lock);
|
||||
|
||||
|
@ -2298,9 +2259,7 @@ lock_rec_cancel(
|
|||
/*============*/
|
||||
lock_t* lock) /* in: waiting record lock request */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(lock_get_type(lock) == LOCK_REC);
|
||||
|
||||
/* Reset the bit (there can be only one set bit) in the lock bitmap */
|
||||
|
@ -2333,9 +2292,7 @@ lock_rec_dequeue_from_page(
|
|||
lock_t* lock;
|
||||
trx_t* trx;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(lock_get_type(in_lock) == LOCK_REC);
|
||||
|
||||
trx = in_lock->trx;
|
||||
|
@ -2378,9 +2335,7 @@ lock_rec_discard(
|
|||
ulint page_no;
|
||||
trx_t* trx;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(lock_get_type(in_lock) == LOCK_REC);
|
||||
|
||||
trx = in_lock->trx;
|
||||
|
@ -2409,9 +2364,7 @@ lock_rec_free_all_from_discard_page(
|
|||
lock_t* lock;
|
||||
lock_t* next_lock;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
space = buf_frame_get_space_id(page);
|
||||
page_no = buf_frame_get_page_no(page);
|
||||
|
@ -2444,9 +2397,7 @@ lock_rec_reset_and_release_wait(
|
|||
lock_t* lock;
|
||||
ulint heap_no;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
heap_no = rec_get_heap_no(rec, page_rec_is_comp(rec));
|
||||
|
||||
|
@ -2477,9 +2428,8 @@ lock_rec_inherit_to_gap(
|
|||
the locks on this record */
|
||||
{
|
||||
lock_t* lock;
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
lock = lock_rec_get_first(rec);
|
||||
|
||||
|
@ -2518,9 +2468,8 @@ lock_rec_inherit_to_gap_if_gap_lock(
|
|||
the locks on this record */
|
||||
{
|
||||
lock_t* lock;
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
lock = lock_rec_get_first(rec);
|
||||
|
||||
|
@ -2554,9 +2503,7 @@ lock_rec_move(
|
|||
ulint heap_no;
|
||||
ulint type_mode;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
heap_no = rec_get_heap_no(donator, comp);
|
||||
|
||||
|
@ -3228,9 +3175,7 @@ lock_deadlock_occurs(
|
|||
ulint cost = 0;
|
||||
|
||||
ut_ad(trx && lock);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
retry:
|
||||
/* We check that adding this trx to the waits-for graph
|
||||
does not produce a cycle. First mark all active transactions
|
||||
|
@ -3302,9 +3247,7 @@ lock_deadlock_recursive(
|
|||
ulint ret;
|
||||
|
||||
ut_a(trx && start && wait_lock);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (trx->deadlock_mark == 1) {
|
||||
/* We have already exhaustively searched the subtree starting
|
||||
|
@ -3472,9 +3415,7 @@ lock_table_create(
|
|||
lock_t* lock;
|
||||
|
||||
ut_ad(table && trx);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (type_mode == LOCK_AUTO_INC) {
|
||||
/* Only one trx can have the lock on the table
|
||||
|
@ -3519,9 +3460,7 @@ lock_table_remove_low(
|
|||
dict_table_t* table;
|
||||
trx_t* trx;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
table = lock->un_member.tab_lock.table;
|
||||
trx = lock->trx;
|
||||
|
@ -3555,9 +3494,7 @@ lock_table_enqueue_waiting(
|
|||
lock_t* lock;
|
||||
trx_t* trx;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
/* Test if there already is some other reason to suspend thread:
|
||||
we do not enqueue a lock request if the query thread should be
|
||||
|
@ -3630,9 +3567,7 @@ lock_table_other_has_incompatible(
|
|||
{
|
||||
lock_t* lock;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
lock = UT_LIST_GET_LAST(table->locks);
|
||||
|
||||
|
@ -3786,9 +3721,7 @@ lock_table_dequeue(
|
|||
{
|
||||
lock_t* lock;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_a(lock_get_type(in_lock) == LOCK_TABLE);
|
||||
|
||||
lock = UT_LIST_GET_NEXT(un_member.tab_lock.locks, in_lock);
|
||||
|
@ -3930,9 +3863,7 @@ lock_release_off_kernel(
|
|||
ulint count;
|
||||
lock_t* lock;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
lock = UT_LIST_GET_LAST(trx->trx_locks);
|
||||
|
||||
|
@ -3993,9 +3924,7 @@ lock_cancel_waiting_and_release(
|
|||
/*============================*/
|
||||
lock_t* lock) /* in: waiting lock request */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (lock_get_type(lock) == LOCK_REC) {
|
||||
|
||||
|
@ -4028,9 +3957,7 @@ lock_reset_all_on_table_for_trx(
|
|||
lock_t* lock;
|
||||
lock_t* prev_lock;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
lock = UT_LIST_GET_LAST(trx->trx_locks);
|
||||
|
||||
|
@ -4091,9 +4018,7 @@ lock_table_print(
|
|||
FILE* file, /* in: file where to print */
|
||||
lock_t* lock) /* in: table type lock */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_a(lock_get_type(lock) == LOCK_TABLE);
|
||||
|
||||
fputs("TABLE LOCK table ", file);
|
||||
|
@ -4143,9 +4068,7 @@ lock_rec_print(
|
|||
ulint* offsets = offsets_;
|
||||
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_a(lock_get_type(lock) == LOCK_REC);
|
||||
|
||||
space = lock->un_member.rec_lock.space;
|
||||
|
@ -4250,9 +4173,7 @@ lock_get_n_rec_locks(void)
|
|||
ulint n_locks = 0;
|
||||
ulint i;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
for (i = 0; i < hash_get_n_cells(lock_sys->rec_hash); i++) {
|
||||
|
||||
|
@ -4492,9 +4413,7 @@ lock_table_queue_validate(
|
|||
lock_t* lock;
|
||||
ibool is_waiting;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
is_waiting = FALSE;
|
||||
|
||||
|
@ -4665,9 +4584,7 @@ lock_rec_validate_page(
|
|||
ulint* offsets = offsets_;
|
||||
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
mtr_start(&mtr);
|
||||
|
||||
|
@ -4943,9 +4860,7 @@ lock_rec_convert_impl_to_expl(
|
|||
{
|
||||
trx_t* impl_trx;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(page_rec_is_user_rec(rec));
|
||||
ut_ad(rec_offs_validate(rec, index, offsets));
|
||||
ut_ad(!page_rec_is_comp(rec) == !rec_offs_comp(offsets));
|
||||
|
|
|
@ -165,9 +165,7 @@ log_buf_pool_get_oldest_modification(void)
|
|||
{
|
||||
dulint lsn;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
lsn = buf_pool_get_oldest_modification();
|
||||
|
||||
|
@ -269,9 +267,7 @@ log_write_low(
|
|||
ulint data_len;
|
||||
byte* log_block;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
part_loop:
|
||||
/* Calculate a part length */
|
||||
|
||||
|
@ -340,9 +336,7 @@ log_close(void)
|
|||
log_t* log = log_sys;
|
||||
ulint checkpoint_age;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
lsn = log->lsn;
|
||||
|
||||
|
@ -464,9 +458,7 @@ log_group_get_capacity(
|
|||
/* out: capacity in bytes */
|
||||
log_group_t* group) /* in: log group */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
return((group->file_size - LOG_FILE_HDR_SIZE) * group->n_files);
|
||||
}
|
||||
|
@ -482,9 +474,7 @@ log_group_calc_size_offset(
|
|||
ulint offset, /* in: real offset within the log group */
|
||||
log_group_t* group) /* in: log group */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
return(offset - LOG_FILE_HDR_SIZE * (1 + offset / group->file_size));
|
||||
}
|
||||
|
@ -500,9 +490,7 @@ log_group_calc_real_offset(
|
|||
ulint offset, /* in: size offset within the log group */
|
||||
log_group_t* group) /* in: log group */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
return(offset + LOG_FILE_HDR_SIZE
|
||||
* (1 + offset / (group->file_size - LOG_FILE_HDR_SIZE)));
|
||||
|
@ -525,9 +513,7 @@ log_group_calc_lsn_offset(
|
|||
ib_longlong group_size;
|
||||
ib_longlong offset;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
/* If total log file size is > 2 GB we can easily get overflows
|
||||
with 32-bit integers. Use 64-bit integers instead. */
|
||||
|
@ -642,9 +628,7 @@ log_calc_max_ages(void)
|
|||
ulint archive_margin;
|
||||
ulint smallest_archive_margin;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
mutex_enter(&(log_sys->mutex));
|
||||
|
||||
|
@ -942,9 +926,7 @@ log_flush_do_unlocks(
|
|||
ulint code) /* in: any ORed combination of LOG_UNLOCK_FLUSH_LOCK
|
||||
and LOG_UNLOCK_NONE_FLUSHED_LOCK */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
/* NOTE that we must own the log mutex when doing the setting of the
|
||||
events: this is because transactions will wait for these events to
|
||||
|
@ -976,9 +958,7 @@ log_group_check_flush_completion(
|
|||
/* out: LOG_UNLOCK_NONE_FLUSHED_LOCK or 0 */
|
||||
log_group_t* group) /* in: log group */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (!log_sys->one_flushed && group->n_pending_writes == 0) {
|
||||
#ifdef UNIV_DEBUG
|
||||
|
@ -1015,9 +995,7 @@ log_sys_check_flush_completion(void)
|
|||
ulint move_start;
|
||||
ulint move_end;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (log_sys->n_pending_writes == 0) {
|
||||
|
||||
|
@ -1129,10 +1107,8 @@ log_group_file_header_flush(
|
|||
{
|
||||
byte* buf;
|
||||
ulint dest_offset;
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
ut_a(nth_file < group->n_files);
|
||||
|
||||
buf = *(group->file_header_bufs + nth_file);
|
||||
|
@ -1203,9 +1179,7 @@ log_group_write_buf(
|
|||
ulint next_offset;
|
||||
ulint i;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_a(len % OS_FILE_LOG_BLOCK_SIZE == 0);
|
||||
ut_a(ut_dulint_get_low(start_lsn) % OS_FILE_LOG_BLOCK_SIZE == 0);
|
||||
|
||||
|
@ -1626,9 +1600,7 @@ void
|
|||
log_complete_checkpoint(void)
|
||||
/*=========================*/
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(log_sys->n_pending_checkpoint_writes == 0);
|
||||
|
||||
log_sys->next_checkpoint_no
|
||||
|
@ -1715,9 +1687,7 @@ log_group_checkpoint(
|
|||
byte* buf;
|
||||
ulint i;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
#if LOG_CHECKPOINT_SIZE > OS_FILE_LOG_BLOCK_SIZE
|
||||
# error "LOG_CHECKPOINT_SIZE > OS_FILE_LOG_BLOCK_SIZE"
|
||||
#endif
|
||||
|
@ -1882,9 +1852,7 @@ log_group_read_checkpoint_info(
|
|||
log_group_t* group, /* in: log group */
|
||||
ulint field) /* in: LOG_CHECKPOINT_1 or LOG_CHECKPOINT_2 */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
log_sys->n_log_ios++;
|
||||
|
||||
|
@ -1902,9 +1870,7 @@ log_groups_write_checkpoint_info(void)
|
|||
{
|
||||
log_group_t* group;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
group = UT_LIST_GET_FIRST(log_sys->log_groups);
|
||||
|
||||
|
@ -2162,9 +2128,7 @@ log_group_read_log_seg(
|
|||
ulint source_offset;
|
||||
ibool sync;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
sync = FALSE;
|
||||
|
||||
|
@ -2237,9 +2201,7 @@ log_group_archive_file_header_write(
|
|||
byte* buf;
|
||||
ulint dest_offset;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
ut_a(nth_file < group->n_files);
|
||||
|
||||
|
@ -2276,9 +2238,7 @@ log_group_archive_completed_header_write(
|
|||
byte* buf;
|
||||
ulint dest_offset;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_a(nth_file < group->n_files);
|
||||
|
||||
buf = *(group->archive_file_header_bufs + nth_file);
|
||||
|
@ -2317,9 +2277,7 @@ log_group_archive(
|
|||
ulint n_files;
|
||||
ulint open_mode;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
start_lsn = log_sys->archived_lsn;
|
||||
|
||||
|
@ -2452,9 +2410,7 @@ log_archive_groups(void)
|
|||
{
|
||||
log_group_t* group;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
group = UT_LIST_GET_FIRST(log_sys->log_groups);
|
||||
|
||||
|
@ -2477,9 +2433,7 @@ log_archive_write_complete_groups(void)
|
|||
dulint end_lsn;
|
||||
ulint i;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
group = UT_LIST_GET_FIRST(log_sys->log_groups);
|
||||
|
||||
|
@ -2546,9 +2500,7 @@ void
|
|||
log_archive_check_completion_low(void)
|
||||
/*==================================*/
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (log_sys->n_pending_archive_ios == 0
|
||||
&& log_sys->archiving_phase == LOG_ARCHIVE_READ) {
|
||||
|
@ -2784,9 +2736,7 @@ log_archive_close_groups(
|
|||
log_group_t* group;
|
||||
ulint trunc_len;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (log_sys->archiving_state == LOG_ARCH_OFF) {
|
||||
|
||||
|
@ -3278,9 +3228,7 @@ log_check_log_recs(
|
|||
byte* buf1;
|
||||
byte* scan_buf;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (len == 0) {
|
||||
|
||||
|
|
|
@ -171,9 +171,8 @@ void
|
|||
recv_sys_empty_hash(void)
|
||||
/*=====================*/
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(recv_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (recv_sys->n_addrs != 0) {
|
||||
fprintf(stderr,
|
||||
"InnoDB: Error: %lu pages with log records"
|
||||
|
@ -1396,9 +1395,8 @@ loop:
|
|||
goto loop;
|
||||
}
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!allow_ibuf == mutex_own(&log_sys->mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (!allow_ibuf) {
|
||||
recv_no_ibuf_operations = TRUE;
|
||||
}
|
||||
|
@ -1842,9 +1840,7 @@ recv_parse_log_recs(
|
|||
byte* body;
|
||||
ulint n_recs;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(!ut_dulint_is_zero(recv_sys->parse_start_lsn));
|
||||
loop:
|
||||
ptr = recv_sys->buf + recv_sys->recovered_offset;
|
||||
|
@ -2894,9 +2890,8 @@ recv_reset_logs(
|
|||
{
|
||||
log_group_t* group;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(log_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
log_sys->lsn = ut_dulint_align_up(lsn, OS_FILE_LOG_BLOCK_SIZE);
|
||||
|
||||
group = UT_LIST_GET_FIRST(log_sys->log_groups);
|
||||
|
|
|
@ -257,9 +257,7 @@ mem_pool_fill_free_list(
|
|||
mem_area_t* area2;
|
||||
ibool ret;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(pool->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (i >= 63) {
|
||||
/* We come here when we have run out of space in the
|
||||
|
|
|
@ -1859,10 +1859,9 @@ pars_sql(
|
|||
|
||||
heap = mem_heap_create(256);
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
/* Currently, the parser is not reentrant: */
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
pars_sym_tab_global = sym_tab_create(heap);
|
||||
|
||||
pars_sym_tab_global->string_len = strlen(str);
|
||||
|
|
|
@ -127,9 +127,7 @@ que_graph_publish(
|
|||
que_t* graph, /* in: graph */
|
||||
sess_t* sess) /* in: session */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
UT_LIST_ADD_LAST(graphs, sess->graphs, graph);
|
||||
}
|
||||
|
@ -238,9 +236,7 @@ que_thr_end_wait(
|
|||
{
|
||||
ibool was_active;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(thr);
|
||||
ut_ad((thr->state == QUE_THR_LOCK_WAIT)
|
||||
|| (thr->state == QUE_THR_PROCEDURE_WAIT)
|
||||
|
@ -280,9 +276,7 @@ que_thr_end_wait_no_next_thr(
|
|||
|
||||
ut_a(thr->state == QUE_THR_LOCK_WAIT); /* In MySQL this is the
|
||||
only possible state here */
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(thr);
|
||||
ut_ad((thr->state == QUE_THR_LOCK_WAIT)
|
||||
|| (thr->state == QUE_THR_PROCEDURE_WAIT)
|
||||
|
@ -419,9 +413,7 @@ que_fork_error_handle(
|
|||
{
|
||||
que_thr_t* thr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(trx->sess->state == SESS_ERROR);
|
||||
ut_ad(UT_LIST_GET_LEN(trx->reply_signals) == 0);
|
||||
ut_ad(UT_LIST_GET_LEN(trx->wait_thrs) == 0);
|
||||
|
@ -698,9 +690,7 @@ que_graph_try_free(
|
|||
{
|
||||
sess_t* sess;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
sess = (graph->trx)->sess;
|
||||
|
||||
|
@ -931,9 +921,7 @@ que_thr_stop(
|
|||
que_t* graph;
|
||||
ibool ret = TRUE;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
graph = thr->graph;
|
||||
trx = graph->trx;
|
||||
|
@ -1309,10 +1297,7 @@ que_run_threads_low(
|
|||
|
||||
ut_ad(thr->state == QUE_THR_RUNNING);
|
||||
ut_a(thr_get_trx(thr)->error_state == DB_SUCCESS);
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
/* cumul_resource counts how much resources the OS thread (NOT the
|
||||
query thread) has spent in this function */
|
||||
|
|
|
@ -162,9 +162,8 @@ read_view_oldest_copy_or_open_new(
|
|||
ulint n;
|
||||
ulint i;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
old_view = UT_LIST_GET_LAST(trx_sys->view_list);
|
||||
|
||||
if (old_view == NULL) {
|
||||
|
@ -245,9 +244,9 @@ read_view_open_now(
|
|||
read_view_t* view;
|
||||
trx_t* trx;
|
||||
ulint n;
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
view = read_view_create_low(UT_LIST_GET_LEN(trx_sys->trx_list), heap);
|
||||
|
||||
view->creator_trx_id = cr_trx_id;
|
||||
|
@ -313,9 +312,8 @@ read_view_close(
|
|||
/*============*/
|
||||
read_view_t* view) /* in: read view */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
UT_LIST_REMOVE(view_list, trx_sys->view_list, view);
|
||||
}
|
||||
|
||||
|
|
|
@ -1748,8 +1748,8 @@ row_create_table_for_mysql(
|
|||
ut_ad(trx->mysql_thread_id == os_thread_get_curr_id());
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(rw_lock_own(&dict_operation_lock, RW_LOCK_EX));
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
ut_ad(trx->dict_operation_lock_mode == RW_X_LATCH);
|
||||
|
||||
if (srv_created_new_raw) {
|
||||
|
@ -1964,8 +1964,8 @@ row_create_index_for_mysql(
|
|||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(rw_lock_own(&dict_operation_lock, RW_LOCK_EX));
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
ut_ad(trx->mysql_thread_id == os_thread_get_curr_id());
|
||||
|
||||
trx->op_info = "creating index";
|
||||
|
@ -2080,8 +2080,8 @@ row_table_add_foreign_constraints(
|
|||
{
|
||||
ulint err;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(rw_lock_own(&dict_operation_lock, RW_LOCK_EX));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_a(sql_string);
|
||||
|
@ -2246,9 +2246,7 @@ row_get_background_drop_list_len_low(void)
|
|||
/*======================================*/
|
||||
/* out: how many tables in list */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (!row_mysql_drop_list_inited) {
|
||||
|
||||
|
@ -2726,8 +2724,8 @@ row_truncate_table_for_mysql(
|
|||
|
||||
row_mysql_lock_data_dictionary(trx);
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(rw_lock_own(&dict_operation_lock, RW_LOCK_EX));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
|
@ -3001,8 +2999,8 @@ row_drop_table_for_mysql(
|
|||
locked_dictionary = TRUE;
|
||||
}
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(rw_lock_own(&dict_operation_lock, RW_LOCK_EX));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
|
|
|
@ -63,8 +63,8 @@ row_vers_impl_x_locked_off_kernel(
|
|||
mtr_t mtr;
|
||||
ulint comp;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!rw_lock_own(&(purge_sys->latch), RW_LOCK_SHARED));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
|
|
|
@ -82,10 +82,7 @@ srv_que_task_enqueue_low(
|
|||
que_thr_t* thr) /* in: query thread */
|
||||
{
|
||||
ut_ad(thr);
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
UT_LIST_ADD_LAST(queue, srv_sys->tasks, thr);
|
||||
|
||||
|
|
|
@ -724,9 +724,7 @@ srv_suspend_thread(void)
|
|||
ulint slot_no;
|
||||
ulint type;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
slot_no = thr_local_get_slot_no(os_thread_get_curr_id());
|
||||
|
||||
|
@ -778,9 +776,7 @@ srv_release_threads(
|
|||
ut_ad(type >= SRV_WORKER);
|
||||
ut_ad(type <= SRV_MASTER);
|
||||
ut_ad(n > 0);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
for (i = 0; i < OS_THREAD_MAX_N; i++) {
|
||||
|
||||
|
@ -1303,9 +1299,7 @@ srv_table_reserve_slot_for_mysql(void)
|
|||
srv_slot_t* slot;
|
||||
ulint i;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
i = 0;
|
||||
slot = srv_mysql_table + i;
|
||||
|
@ -1385,9 +1379,7 @@ srv_suspend_mysql_thread(
|
|||
ulint sec;
|
||||
ulint ms;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
trx = thr_get_trx(thr);
|
||||
|
||||
|
@ -1533,9 +1525,7 @@ srv_release_mysql_thread_if_suspended(
|
|||
srv_slot_t* slot;
|
||||
ulint i;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
for (i = 0; i < OS_THREAD_MAX_N; i++) {
|
||||
|
||||
|
|
|
@ -339,9 +339,8 @@ rw_lock_x_lock_low(
|
|||
const char* file_name,/* in: file name where lock requested */
|
||||
ulint line) /* in: line where requested */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(rw_lock_get_mutex(lock)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (rw_lock_get_writer(lock) == RW_LOCK_NOT_LOCKED) {
|
||||
|
||||
if (rw_lock_get_reader_count(lock) == 0) {
|
||||
|
|
|
@ -329,6 +329,7 @@ mutex_enter_nowait(
|
|||
|
||||
if (!mutex_test_and_set(mutex)) {
|
||||
|
||||
ut_d(mutex->thread_id = os_thread_get_curr_id());
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
mutex_set_debug_info(mutex, file_name, line);
|
||||
#endif
|
||||
|
@ -346,13 +347,29 @@ Checks that the mutex has been initialized. */
|
|||
ibool
|
||||
mutex_validate(
|
||||
/*===========*/
|
||||
mutex_t* mutex)
|
||||
const mutex_t* mutex)
|
||||
{
|
||||
ut_a(mutex);
|
||||
ut_a(mutex->magic_n == MUTEX_MAGIC_N);
|
||||
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
Checks that the current thread owns the mutex. Works only in the debug
|
||||
version. */
|
||||
|
||||
ibool
|
||||
mutex_own(
|
||||
/*======*/
|
||||
/* out: TRUE if owns */
|
||||
const mutex_t* mutex) /* in: mutex */
|
||||
{
|
||||
ut_ad(mutex_validate(mutex));
|
||||
|
||||
return(mutex_get_lock_word(mutex) == 1
|
||||
&& os_thread_eq(mutex->thread_id, os_thread_get_curr_id()));
|
||||
}
|
||||
#endif /* UNIV_DEBUG */
|
||||
|
||||
/**********************************************************************
|
||||
|
@ -451,6 +468,7 @@ spin_loop:
|
|||
if (mutex_test_and_set(mutex) == 0) {
|
||||
/* Succeeded! */
|
||||
|
||||
ut_d(mutex->thread_id = os_thread_get_curr_id());
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
mutex_set_debug_info(mutex, file_name, line);
|
||||
#endif
|
||||
|
@ -492,6 +510,7 @@ spin_loop:
|
|||
sync_array_free_cell_protected(sync_primary_wait_array,
|
||||
index);
|
||||
|
||||
ut_d(mutex->thread_id = os_thread_get_curr_id());
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
mutex_set_debug_info(mutex, file_name, line);
|
||||
#endif
|
||||
|
@ -592,7 +611,6 @@ mutex_set_debug_info(
|
|||
|
||||
mutex->file_name = file_name;
|
||||
mutex->line = line;
|
||||
mutex->thread_id = os_thread_get_curr_id();
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
|
@ -614,31 +632,6 @@ mutex_get_debug_info(
|
|||
*thread_id = mutex->thread_id;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
Checks that the current thread owns the mutex. Works only in the debug
|
||||
version. */
|
||||
|
||||
ibool
|
||||
mutex_own(
|
||||
/*======*/
|
||||
/* out: TRUE if owns */
|
||||
mutex_t* mutex) /* in: mutex */
|
||||
{
|
||||
ut_ad(mutex_validate(mutex));
|
||||
|
||||
if (mutex_get_lock_word(mutex) != 1) {
|
||||
|
||||
return(FALSE);
|
||||
}
|
||||
|
||||
if (!os_thread_eq(mutex->thread_id, os_thread_get_curr_id())) {
|
||||
|
||||
return(FALSE);
|
||||
}
|
||||
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
Prints debug info of currently reserved mutexes. */
|
||||
static
|
||||
|
|
|
@ -64,9 +64,7 @@ thr_local_get(
|
|||
|
||||
try_again:
|
||||
ut_ad(thr_local_hash);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&thr_local_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
/* Look for the local struct in the hash table */
|
||||
|
||||
|
|
|
@ -197,9 +197,7 @@ void
|
|||
trx_purge_sys_create(void)
|
||||
/*======================*/
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
purge_sys = mem_alloc(sizeof(trx_purge_t));
|
||||
|
||||
|
@ -260,9 +258,8 @@ trx_purge_add_update_undo_to_history(
|
|||
ut_ad(undo);
|
||||
|
||||
rseg = undo->rseg;
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
|
||||
ut_ad(mutex_own(&(rseg->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
rseg_header = trx_rsegf_get(rseg->space, rseg->page_no, mtr);
|
||||
|
||||
|
@ -341,9 +338,7 @@ trx_purge_free_segment(
|
|||
|
||||
/* fputs("Freeing an update undo log segment\n", stderr); */
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(purge_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
loop:
|
||||
mtr_start(&mtr);
|
||||
mutex_enter(&(rseg->mutex));
|
||||
|
@ -445,9 +440,7 @@ trx_purge_truncate_rseg_history(
|
|||
ulint n_removed_logs = 0;
|
||||
mtr_t mtr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(purge_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
mtr_start(&mtr);
|
||||
mutex_enter(&(rseg->mutex));
|
||||
|
@ -537,9 +530,7 @@ trx_purge_truncate_history(void)
|
|||
dulint limit_trx_no;
|
||||
dulint limit_undo_no;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(purge_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
trx_purge_arr_get_biggest(purge_sys->arr, &limit_trx_no,
|
||||
&limit_undo_no);
|
||||
|
@ -579,9 +570,7 @@ trx_purge_truncate_if_arr_empty(void)
|
|||
/*=================================*/
|
||||
/* out: TRUE if array empty */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(purge_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (purge_sys->arr->n_used == 0) {
|
||||
|
||||
|
@ -610,9 +599,7 @@ trx_purge_rseg_get_next_history_log(
|
|||
ibool del_marks;
|
||||
mtr_t mtr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(purge_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
mutex_enter(&(rseg->mutex));
|
||||
|
||||
|
@ -715,9 +702,7 @@ trx_purge_choose_next_log(void)
|
|||
ulint offset = 0; /* remove warning (??? bug ???) */
|
||||
mtr_t mtr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(purge_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(purge_sys->next_stored == FALSE);
|
||||
|
||||
rseg = UT_LIST_GET_FIRST(trx_sys->rseg_list);
|
||||
|
@ -818,9 +803,7 @@ trx_purge_get_next_rec(
|
|||
ulint cmpl_info;
|
||||
mtr_t mtr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(purge_sys->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(purge_sys->next_stored);
|
||||
|
||||
space = purge_sys->rseg->space;
|
||||
|
|
|
@ -785,10 +785,8 @@ trx_roll_try_truncate(
|
|||
dulint limit;
|
||||
dulint biggest;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(trx->undo_mutex)));
|
||||
ut_ad(mutex_own(&((trx->rseg)->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
trx->pages_undone = 0;
|
||||
|
||||
|
@ -831,9 +829,7 @@ trx_roll_pop_top_rec(
|
|||
trx_undo_rec_t* prev_rec;
|
||||
page_t* prev_rec_page;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(trx->undo_mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
undo_page = trx_undo_page_get_s_latched(undo->space,
|
||||
undo->top_page_no, mtr);
|
||||
|
@ -1060,9 +1056,7 @@ trx_rollback(
|
|||
que_thr_t* thr;
|
||||
/* que_thr_t* thr2; */
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad((trx->undo_no_arr == NULL) || ((trx->undo_no_arr)->n_used == 0));
|
||||
|
||||
/* Initialize the rollback field in the transaction */
|
||||
|
@ -1131,9 +1125,7 @@ trx_roll_graph_build(
|
|||
que_thr_t* thr;
|
||||
/* que_thr_t* thr2; */
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
heap = mem_heap_create(512);
|
||||
fork = que_fork_create(NULL, NULL, QUE_FORK_ROLLBACK, heap);
|
||||
|
@ -1160,9 +1152,7 @@ trx_finish_error_processing(
|
|||
trx_sig_t* sig;
|
||||
trx_sig_t* next_sig;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
sig = UT_LIST_GET_FIRST(trx->signals);
|
||||
|
||||
|
@ -1195,9 +1185,7 @@ trx_finish_partial_rollback_off_kernel(
|
|||
{
|
||||
trx_sig_t* sig;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
sig = UT_LIST_GET_FIRST(trx->signals);
|
||||
|
||||
|
@ -1228,9 +1216,7 @@ trx_finish_rollback_off_kernel(
|
|||
trx_sig_t* sig;
|
||||
trx_sig_t* next_sig;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
ut_a(trx->undo_no_arr == NULL || trx->undo_no_arr->n_used == 0);
|
||||
|
||||
|
|
|
@ -60,9 +60,7 @@ trx_rseg_header_create(
|
|||
page_t* page;
|
||||
|
||||
ut_ad(mtr);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(mtr_memo_contains(mtr, fil_space_get_latch(space),
|
||||
MTR_MEMO_X_LOCK));
|
||||
sys_header = trx_sysf_get(mtr);
|
||||
|
@ -138,9 +136,7 @@ trx_rseg_mem_create(
|
|||
ulint sum_of_undo_sizes;
|
||||
ulint len;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
rseg = mem_alloc(sizeof(trx_rseg_t));
|
||||
|
||||
|
|
|
@ -547,9 +547,7 @@ trx_in_trx_list(
|
|||
{
|
||||
trx_t* trx;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(kernel_mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
trx = UT_LIST_GET_FIRST(trx_sys->trx_list);
|
||||
|
||||
|
@ -576,9 +574,7 @@ trx_sys_flush_max_trx_id(void)
|
|||
trx_sysf_t* sys_header;
|
||||
mtr_t mtr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
mtr_start(&mtr);
|
||||
|
||||
|
@ -799,9 +795,7 @@ trx_sysf_rseg_find_free(
|
|||
ulint page_no;
|
||||
ulint i;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(kernel_mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
sys_header = trx_sysf_get(mtr);
|
||||
|
||||
|
|
|
@ -101,9 +101,7 @@ trx_create(
|
|||
{
|
||||
trx_t* trx;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
trx = mem_alloc(sizeof(trx_t));
|
||||
|
||||
|
@ -280,9 +278,7 @@ trx_free(
|
|||
/*=====*/
|
||||
trx_t* trx) /* in, own: trx object */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (trx->declared_to_be_inside_innodb) {
|
||||
ut_print_timestamp(stderr);
|
||||
|
@ -406,9 +402,7 @@ trx_list_insert_ordered(
|
|||
{
|
||||
trx_t* trx2;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
trx2 = UT_LIST_GET_FIRST(trx_sys->trx_list);
|
||||
|
||||
|
@ -633,9 +627,7 @@ trx_assign_rseg(void)
|
|||
{
|
||||
trx_rseg_t* rseg = trx_sys->latest_rseg;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
loop:
|
||||
/* Get next rseg in a round-robin fashion */
|
||||
|
||||
|
@ -672,9 +664,7 @@ trx_start_low(
|
|||
{
|
||||
trx_rseg_t* rseg;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(trx->rseg == NULL);
|
||||
|
||||
if (trx->type == TRX_PURGE) {
|
||||
|
@ -749,9 +739,7 @@ trx_commit_off_kernel(
|
|||
ibool must_flush_log = FALSE;
|
||||
mtr_t mtr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
trx->must_flush_log_later = FALSE;
|
||||
|
||||
|
@ -851,9 +839,7 @@ trx_commit_off_kernel(
|
|||
|
||||
ut_ad(trx->conc_state == TRX_ACTIVE
|
||||
|| trx->conc_state == TRX_PREPARED);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
/* The following assignment makes the transaction committed in memory
|
||||
and makes its changes to data visible to other transactions.
|
||||
|
@ -1036,9 +1022,7 @@ trx_handle_commit_sig_off_kernel(
|
|||
trx_sig_t* sig;
|
||||
trx_sig_t* next_sig;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
trx->que_state = TRX_QUE_COMMITTING;
|
||||
|
||||
|
@ -1078,9 +1062,7 @@ trx_end_lock_wait(
|
|||
{
|
||||
que_thr_t* thr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(trx->que_state == TRX_QUE_LOCK_WAIT);
|
||||
|
||||
thr = UT_LIST_GET_FIRST(trx->wait_thrs);
|
||||
|
@ -1107,9 +1089,7 @@ trx_lock_wait_to_suspended(
|
|||
{
|
||||
que_thr_t* thr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(trx->que_state == TRX_QUE_LOCK_WAIT);
|
||||
|
||||
thr = UT_LIST_GET_FIRST(trx->wait_thrs);
|
||||
|
@ -1137,9 +1117,7 @@ trx_sig_reply_wait_to_suspended(
|
|||
trx_sig_t* sig;
|
||||
que_thr_t* thr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
sig = UT_LIST_GET_FIRST(trx->reply_signals);
|
||||
|
||||
|
@ -1172,9 +1150,7 @@ trx_sig_is_compatible(
|
|||
{
|
||||
trx_sig_t* sig;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (UT_LIST_GET_LEN(trx->signals) == 0) {
|
||||
|
||||
|
@ -1260,9 +1236,7 @@ trx_sig_send(
|
|||
trx_t* receiver_trx;
|
||||
|
||||
ut_ad(trx);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (!trx_sig_is_compatible(trx, type, sender)) {
|
||||
/* The signal is not compatible with the other signals in
|
||||
|
@ -1332,9 +1306,7 @@ trx_end_signal_handling(
|
|||
/*====================*/
|
||||
trx_t* trx) /* in: trx */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(trx->handling_signals == TRUE);
|
||||
|
||||
trx->handling_signals = FALSE;
|
||||
|
@ -1368,9 +1340,7 @@ loop:
|
|||
we can process immediately */
|
||||
|
||||
ut_ad(trx);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (trx->handling_signals && (UT_LIST_GET_LEN(trx->signals) == 0)) {
|
||||
|
||||
|
@ -1471,9 +1441,7 @@ trx_sig_reply(
|
|||
trx_t* receiver_trx;
|
||||
|
||||
ut_ad(sig);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (sig->receiver != NULL) {
|
||||
ut_ad((sig->receiver)->state == QUE_THR_SIG_REPLY_WAIT);
|
||||
|
@ -1501,9 +1469,7 @@ trx_sig_remove(
|
|||
trx_sig_t* sig) /* in, own: signal */
|
||||
{
|
||||
ut_ad(trx && sig);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
ut_ad(sig->receiver == NULL);
|
||||
|
||||
|
@ -1820,9 +1786,7 @@ trx_prepare_off_kernel(
|
|||
dulint lsn;
|
||||
mtr_t mtr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
rseg = trx->rseg;
|
||||
|
||||
|
@ -1868,9 +1832,7 @@ trx_prepare_off_kernel(
|
|||
mutex_enter(&kernel_mutex);
|
||||
}
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
/*--------------------------------------*/
|
||||
trx->conc_state = TRX_PREPARED;
|
||||
|
|
|
@ -395,9 +395,7 @@ trx_undo_seg_create(
|
|||
ibool success;
|
||||
|
||||
ut_ad(mtr && id && rseg_hdr);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(rseg->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
/* fputs(type == TRX_UNDO_INSERT
|
||||
? "Creating insert undo log segment\n"
|
||||
|
@ -836,11 +834,9 @@ trx_undo_add_page(
|
|||
ulint n_reserved;
|
||||
ibool success;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(trx->undo_mutex)));
|
||||
ut_ad(!mutex_own(&kernel_mutex));
|
||||
ut_ad(mutex_own(&(trx->rseg->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
rseg = trx->rseg;
|
||||
|
||||
|
@ -911,10 +907,8 @@ trx_undo_free_page(
|
|||
ulint hist_size;
|
||||
|
||||
ut_a(hdr_page_no != page_no);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!mutex_own(&kernel_mutex));
|
||||
ut_ad(mutex_own(&(rseg->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
undo_page = trx_undo_page_get(space, page_no, mtr);
|
||||
|
||||
|
@ -961,9 +955,7 @@ trx_undo_free_page_in_rollback(
|
|||
ulint last_page_no;
|
||||
|
||||
ut_ad(undo->hdr_page_no != page_no);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(trx->undo_mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
last_page_no = trx_undo_free_page(undo->rseg, FALSE, undo->space,
|
||||
undo->hdr_page_no, page_no, mtr);
|
||||
|
@ -1016,10 +1008,8 @@ trx_undo_truncate_end(
|
|||
trx_rseg_t* rseg;
|
||||
mtr_t mtr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(trx->undo_mutex)));
|
||||
ut_ad(mutex_own(&(trx->rseg->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
rseg = trx->rseg;
|
||||
|
||||
|
@ -1096,9 +1086,7 @@ trx_undo_truncate_start(
|
|||
ulint page_no;
|
||||
mtr_t mtr;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(rseg->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (0 == ut_dulint_cmp(limit, ut_dulint_zero)) {
|
||||
|
||||
|
@ -1164,9 +1152,9 @@ trx_undo_seg_free(
|
|||
while (!finished) {
|
||||
|
||||
mtr_start(&mtr);
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
|
||||
ut_ad(!mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
mutex_enter(&(rseg->mutex));
|
||||
|
||||
seg_header = trx_undo_page_get(undo->space, undo->hdr_page_no,
|
||||
|
@ -1389,9 +1377,7 @@ trx_undo_mem_create(
|
|||
{
|
||||
trx_undo_t* undo;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(rseg->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (id >= TRX_RSEG_N_SLOTS) {
|
||||
fprintf(stderr,
|
||||
|
@ -1437,11 +1423,9 @@ trx_undo_mem_init_for_reuse(
|
|||
XID* xid, /* in: X/Open XA transaction identification*/
|
||||
ulint offset) /* in: undo log header byte offset on page */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&((undo->rseg)->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (undo->id >= TRX_RSEG_N_SLOTS) {
|
||||
if (UNIV_UNLIKELY(undo->id >= TRX_RSEG_N_SLOTS)) {
|
||||
fprintf(stderr, "InnoDB: Error: undo->id is %lu\n",
|
||||
(ulong) undo->id);
|
||||
|
||||
|
@ -1501,9 +1485,7 @@ trx_undo_create(
|
|||
trx_undo_t* undo;
|
||||
page_t* undo_page;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(rseg->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (rseg->curr_size == rseg->max_size) {
|
||||
|
||||
|
@ -1561,9 +1543,7 @@ trx_undo_reuse_cached(
|
|||
page_t* undo_page;
|
||||
ulint offset;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(rseg->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (type == TRX_UNDO_INSERT) {
|
||||
|
||||
|
@ -1671,15 +1651,12 @@ trx_undo_assign_undo(
|
|||
|
||||
rseg = trx->rseg;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(trx->undo_mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
mtr_start(&mtr);
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(!mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
mutex_enter(&(rseg->mutex));
|
||||
|
||||
undo = trx_undo_reuse_cached(trx, rseg, type, trx->id, &trx->xid,
|
||||
|
@ -1836,9 +1813,8 @@ trx_undo_update_cleanup(
|
|||
undo = trx->update_undo;
|
||||
rseg = trx->rseg;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&(rseg->mutex)));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
trx_purge_add_update_undo_to_history(trx, undo_page, mtr);
|
||||
|
||||
UT_LIST_REMOVE(undo_list, rseg->update_undo_list, undo);
|
||||
|
|
|
@ -32,9 +32,8 @@ sess_open(void)
|
|||
{
|
||||
sess_t* sess;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
sess = mem_alloc(sizeof(sess_t));
|
||||
|
||||
sess->state = SESS_ACTIVE;
|
||||
|
@ -54,9 +53,7 @@ sess_close(
|
|||
/*=======*/
|
||||
sess_t* sess) /* in, own: session object */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
ut_ad(sess->trx == NULL);
|
||||
|
||||
mem_free(sess);
|
||||
|
@ -72,9 +69,8 @@ sess_try_close(
|
|||
/* out: TRUE if closed */
|
||||
sess_t* sess) /* in, own: session object */
|
||||
{
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(mutex_own(&kernel_mutex));
|
||||
#endif /* UNIV_SYNC_DEBUG */
|
||||
|
||||
if (UT_LIST_GET_LEN(sess->graphs) == 0) {
|
||||
sess_close(sess);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue