diff options
Diffstat (limited to 'innobase/srv/srv0srv.c')
-rw-r--r-- | innobase/srv/srv0srv.c | 54 |
1 files changed, 27 insertions, 27 deletions
diff --git a/innobase/srv/srv0srv.c b/innobase/srv/srv0srv.c index e9ea4155e0d..838e63b3e25 100644 --- a/innobase/srv/srv0srv.c +++ b/innobase/srv/srv0srv.c @@ -34,12 +34,9 @@ Created 10/8/1995 Heikki Tuuri #include "sync0sync.h" #include "sync0ipm.h" #include "thr0loc.h" -#include "com0com.h" -#include "com0shm.h" #include "que0que.h" #include "srv0que.h" #include "log0recv.h" -#include "odbc0odbc.h" #include "pars0pars.h" #include "usr0sess.h" #include "lock0lock.h" @@ -253,9 +250,6 @@ ibool srv_use_adaptive_hash_indexes = TRUE; ulint srv_n_spin_wait_rounds = 20; ulint srv_spin_wait_delay = 5; ibool srv_priority_boost = TRUE; -char srv_endpoint_name[COM_MAX_ADDR_LEN]; -ulint srv_n_com_threads = ULINT_MAX; -ulint srv_n_worker_threads = ULINT_MAX; ibool srv_print_thread_releases = FALSE; ibool srv_print_lock_waits = FALSE; @@ -263,14 +257,14 @@ ibool srv_print_buf_io = FALSE; ibool srv_print_log_io = FALSE; ibool srv_print_latch_waits = FALSE; -ulint srv_n_rows_inserted = 0; -ulint srv_n_rows_updated = 0; -ulint srv_n_rows_deleted = 0; -ulint srv_n_rows_read = 0; -ulint srv_n_rows_inserted_old = 0; -ulint srv_n_rows_updated_old = 0; -ulint srv_n_rows_deleted_old = 0; -ulint srv_n_rows_read_old = 0; +ulint srv_n_rows_inserted = 0; +ulint srv_n_rows_updated = 0; +ulint srv_n_rows_deleted = 0; +ulint srv_n_rows_read = 0; +static ulint srv_n_rows_inserted_old = 0; +static ulint srv_n_rows_updated_old = 0; +static ulint srv_n_rows_deleted_old = 0; +static ulint srv_n_rows_read_old = 0; /* Set the following to 0 if you want InnoDB to write messages on @@ -630,7 +624,9 @@ 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()); @@ -681,7 +677,9 @@ 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++) { @@ -1185,7 +1183,9 @@ 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; @@ -1215,7 +1215,7 @@ srv_table_reserve_slot_for_mysql(void) (ulong) difftime(ut_time(), slot->suspend_time)); } - ut_a(0); + ut_error; } slot = srv_mysql_table + i; @@ -1250,7 +1250,9 @@ srv_suspend_mysql_thread( ibool had_dict_lock = FALSE; ibool was_declared_inside_innodb = FALSE; +#ifdef UNIV_SYNC_DEBUG ut_ad(!mutex_own(&kernel_mutex)); +#endif /* UNIV_SYNC_DEBUG */ trx = thr_get_trx(thr); @@ -1369,7 +1371,9 @@ 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++) { @@ -1465,6 +1469,13 @@ srv_sprintf_innodb_monitor( buf = buf + strlen(buf); ut_a(buf < buf_end + 1500); + /* Conceptually, srv_innodb_monitor_mutex has a very high latching + order level in sync0sync.h, while dict_foreign_err_mutex has a very + low level 135. Therefore we can reserve the latter mutex here without + a danger of a deadlock of threads. */ + + mutex_enter(&dict_foreign_err_mutex); + if (*dict_foreign_err_buf != '\0') { buf += sprintf(buf, "------------------------\n" @@ -1476,18 +1487,7 @@ srv_sprintf_innodb_monitor( } } - ut_a(buf < buf_end + 1500); - - if (*dict_unique_err_buf != '\0') { - buf += sprintf(buf, -"---------------------------------------------------------------\n" -"LATEST UNIQUE KEY ERROR (is masked in REPLACE or INSERT IGNORE)\n" -"---------------------------------------------------------------\n"); - - if (buf_end - buf > 6000) { - buf+= sprintf(buf, "%.4000s", dict_unique_err_buf); - } - } + mutex_exit(&dict_foreign_err_mutex); ut_a(buf < buf_end + 1500); |