diff options
author | unknown <monty@mysql.com> | 2004-03-16 22:41:30 +0200 |
---|---|---|
committer | unknown <monty@mysql.com> | 2004-03-16 22:41:30 +0200 |
commit | a8aacf87648f64e7489220dab7d8729c5c01e13d (patch) | |
tree | af285d8080c003d1ecb1479ec43c9b6996fd567f /innobase/srv | |
parent | 17f8d3d725f4b465a8a0dc8e96b04cd973c47fd5 (diff) | |
parent | 277cf702da7e6f0642742eb10582cfc382e537ec (diff) | |
download | mariadb-git-a8aacf87648f64e7489220dab7d8729c5c01e13d.tar.gz |
merge with 4.0
BitKeeper/etc/logging_ok:
auto-union
VC++Files/innobase/innobase.dsp:
Auto merged
VC++Files/libmysql/libmysql.dsp:
Auto merged
acinclude.m4:
Auto merged
configure.in:
Auto merged
BitKeeper/deleted/.del-com0shm.c~6a16f0c3d81de1f:
Auto merged
BitKeeper/deleted/.del-mysql_fix_privilege_tables.sql:
Auto merged
extra/replace.c:
Auto merged
include/my_sys.h:
Auto merged
innobase/btr/btr0btr.c:
Auto merged
innobase/btr/btr0cur.c:
Auto merged
innobase/btr/btr0pcur.c:
Auto merged
innobase/btr/btr0sea.c:
Auto merged
innobase/configure.in:
Auto merged
innobase/data/data0data.c:
Auto merged
innobase/dict/dict0boot.c:
Auto merged
innobase/dict/dict0crea.c:
Auto merged
innobase/dict/dict0dict.c:
Auto merged
innobase/dict/dict0load.c:
Auto merged
innobase/dict/dict0mem.c:
Auto merged
innobase/ha/ha0ha.c:
Auto merged
innobase/ha/hash0hash.c:
Auto merged
innobase/include/btr0btr.ic:
Auto merged
innobase/include/data0type.ic:
Auto merged
innobase/include/dict0mem.h:
Auto merged
innobase/include/log0log.ic:
Auto merged
innobase/include/mach0data.ic:
Auto merged
innobase/include/mtr0log.h:
Auto merged
innobase/include/mtr0mtr.h:
Auto merged
innobase/include/os0file.h:
Auto merged
innobase/include/row0upd.ic:
Auto merged
innobase/include/srv0srv.h:
Auto merged
innobase/include/sync0sync.h:
Auto merged
innobase/include/trx0rseg.ic:
Auto merged
innobase/lock/lock0lock.c:
Auto merged
innobase/log/log0recv.c:
Auto merged
innobase/mem/mem0dbg.c:
Auto merged
innobase/mtr/mtr0log.c:
Auto merged
innobase/mtr/mtr0mtr.c:
Auto merged
innobase/os/os0file.c:
Auto merged
innobase/page/page0cur.c:
Auto merged
innobase/page/page0page.c:
Auto merged
innobase/pars/lexyy.c:
Auto merged
innobase/read/read0read.c:
Auto merged
innobase/rem/rem0cmp.c:
Auto merged
innobase/rem/rem0rec.c:
Auto merged
innobase/row/row0ins.c:
Auto merged
innobase/row/row0mysql.c:
Auto merged
innobase/row/row0purge.c:
Auto merged
innobase/row/row0sel.c:
Auto merged
innobase/row/row0undo.c:
Auto merged
innobase/row/row0upd.c:
Auto merged
innobase/srv/srv0srv.c:
Auto merged
innobase/srv/srv0start.c:
Auto merged
innobase/sync/sync0rw.c:
Auto merged
innobase/thr/thr0loc.c:
Auto merged
innobase/trx/trx0purge.c:
Auto merged
innobase/trx/trx0rec.c:
Auto merged
innobase/trx/trx0roll.c:
Auto merged
innobase/trx/trx0trx.c:
Auto merged
innobase/trx/trx0undo.c:
Auto merged
myisam/mi_check.c:
Auto merged
myisam/myisamchk.c:
Auto merged
mysql-test/r/multi_update.result:
Auto merged
mysql-test/r/mysqlbinlog.result:
Auto merged
mysql-test/r/rpl_error_ignored_table.result:
Auto merged
mysql-test/t/multi_update.test:
Auto merged
mysql-test/t/rpl_error_ignored_table.test:
Auto merged
mysys/mf_iocache.c:
Auto merged
mysys/mf_pack.c:
Auto merged
mysys/my_getopt.c:
Auto merged
sql/ha_berkeley.cc:
Auto merged
sql/ha_myisam.cc:
Auto merged
sql/lock.cc:
Auto merged
sql/log.cc:
Auto merged
sql/opt_range.cc:
Auto merged
sql/set_var.h:
Auto merged
sql/sql_cache.cc:
Auto merged
sql/sql_cache.h:
Auto merged
sql/sql_delete.cc:
Auto merged
sql/sql_handler.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_list.h:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_update.cc:
Auto merged
tests/thread_test.c:
Auto merged
client/mysqldump.c:
Keep original indentation
mysql-test/r/merge.result:
keep old file
scripts/mysql_fix_privilege_tables.sh:
Keep old structure in merge with 4.0
sql/table.cc:
merge with 4.0 + simple optimizations
Diffstat (limited to 'innobase/srv')
-rw-r--r-- | innobase/srv/srv0que.c | 2 | ||||
-rw-r--r-- | innobase/srv/srv0srv.c | 54 | ||||
-rw-r--r-- | innobase/srv/srv0start.c | 3 |
3 files changed, 29 insertions, 30 deletions
diff --git a/innobase/srv/srv0que.c b/innobase/srv/srv0que.c index 4d36adfefa4..ac8bd7d0e65 100644 --- a/innobase/srv/srv0que.c +++ b/innobase/srv/srv0que.c @@ -83,7 +83,9 @@ srv_que_task_enqueue_low( { 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); 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); diff --git a/innobase/srv/srv0start.c b/innobase/srv/srv0start.c index 6335b857b09..7b50877709b 100644 --- a/innobase/srv/srv0start.c +++ b/innobase/srv/srv0start.c @@ -40,7 +40,6 @@ Created 2/16/1996 Heikki Tuuri #include "rem0rec.h" #include "srv0srv.h" #include "que0que.h" -#include "com0com.h" #include "usr0sess.h" #include "lock0lock.h" #include "trx0roll.h" @@ -1300,8 +1299,6 @@ NetWare. */ mutex_exit(&(log_sys->mutex)); } - sess_sys_init_at_db_start(); - if (create_new_db) { mtr_start(&mtr); |