2001-02-17 14:19:19 +02:00
|
|
|
/******************************************************
|
|
|
|
The interface to the operating system
|
|
|
|
synchronization primitives.
|
|
|
|
|
|
|
|
(c) 1995 Innobase Oy
|
|
|
|
|
|
|
|
Created 9/6/1995 Heikki Tuuri
|
|
|
|
*******************************************************/
|
|
|
|
|
|
|
|
#include "os0sync.h"
|
|
|
|
#ifdef UNIV_NONINL
|
|
|
|
#include "os0sync.ic"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef __WIN__
|
|
|
|
#include <windows.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include "ut0mem.h"
|
2003-05-30 22:44:37 +03:00
|
|
|
#include "srv0start.h"
|
2001-02-17 14:19:19 +02:00
|
|
|
|
|
|
|
/* Type definition for an operating system mutex struct */
|
ut0ut.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0pool.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0file.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0shm.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0thread.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
page0page.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
que0que.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0ins.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0mysql.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0sel.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0upd.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0vers.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0srv.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0start.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0arr.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0rw.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0sync.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
trx0rec.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
trx0trx.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0srv.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0rw.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0sync.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
ut0dbg.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
lock0lock.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
log0log.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
log0recv.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
ibuf0ibuf.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
hash0hash.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mach0data.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0mem.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0pool.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mtr0mtr.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0file.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0thread.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
univ.i Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0mysql.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
com0shm.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
data0data.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
data0type.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
dict0crea.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
dict0dict.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fil0fil.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fsp0fsp.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fut0lst.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0sea.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0flu.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0btr.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0cur.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0btr.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0cur.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0sea.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/buf/buf0buf.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/buf/buf0flu.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/com/com0shm.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/data/data0data.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/data/data0type.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/dict/dict0crea.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/dict/dict0dict.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fil/fil0fil.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fsp/fsp0fsp.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fut/fut0lst.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/ibuf/ibuf0ibuf.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/buf0buf.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/buf0buf.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/hash0hash.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mach0data.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mem0mem.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mem0pool.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mtr0mtr.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0file.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0sync.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0sync.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0thread.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/row0mysql.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/univ.i:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/srv0srv.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/sync0rw.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/sync0sync.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/ut0dbg.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/lock/lock0lock.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/log/log0log.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/log/log0recv.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/mem/mem0pool.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0file.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0shm.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0sync.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0thread.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/page/page0page.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/que/que0que.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0ins.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0mysql.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0sel.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0upd.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0vers.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/srv/srv0srv.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/srv/srv0start.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0arr.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0rw.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0sync.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/trx/trx0rec.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/trx/trx0trx.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/ut/ut0ut.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
2001-03-02 17:33:11 +02:00
|
|
|
struct os_mutex_struct{
|
This ChangeSet must be null-merged to 5.1. Applied innodb-5.0-ss982, -ss998, -ss1003
Fixes:
- Bug #15815: Very poor performance with multiple queries running concurrently
- Bug #22868: 'Thread thrashing' with > 50 concurrent conns under an upd-intensive workloadw
- Bug #23769: Debug assertion failure with innodb_locks_unsafe_for_binlog
- Bug #24089: Race condition in fil_flush_file_spaces()
innobase/buf/buf0buf.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/buf/buf0flu.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/buf/buf0lru.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/dict/dict0crea.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/fil/fil0fil.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1003:
branches/5.0: Merge r1002 from trunk:
fil_flush_file_spaces(): Copy the system->unflushed_spaces list to an
array while holding the mutex. This removes the crash-triggering
race condition that was introduced when fixing Bug 15653. (Bug #24089)
innobase/include/buf0buf.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/include/buf0buf.ic:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/include/dict0crea.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/include/sync0arr.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0rw.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0rw.ic:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0sync.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/os/os0sync.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/row/row0mysql.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/row/row0sel.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r982:
branches/5.0: row_sel(): Do not try to acquire a LOCK_REC_NOT_GAP lock
on the supremum record. Instead, skip to the next record. (Bug #23769)
This fix was backported from r623 in the 5.1 tree.
innobase/srv/srv0start.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r926:
Refer to bug: 22268. Since no one tries to run 5.0 on Windows 95/ME it was
decided to raise the limit of srv_max_n_threads to 10000 on Windows.
innobase/sync/sync0arr.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/sync/sync0rw.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/sync/sync0sync.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r969:
branches/5.0: Port r968 from trunk:
sync_thread_add_level(): When level == SYNC_TREE_NODE, allow the latching
order to be violated if the thread holds dict_operation_lock, whose level is
SYNC_DICT_OPERATION. This removes the assertion failure of TRUNCATE TABLE
#ifdef UNIV_SYNC_DEBUG.
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
2006-11-09 05:02:37 +01:00
|
|
|
os_event_t event; /* Used by sync0arr.c for queing threads */
|
2001-02-17 14:19:19 +02:00
|
|
|
void* handle; /* OS handle to mutex */
|
|
|
|
ulint count; /* we use this counter to check
|
|
|
|
that the same thread does not
|
|
|
|
recursively lock the mutex: we
|
|
|
|
do not assume that the OS mutex
|
|
|
|
supports recursive locking, though
|
2003-05-30 22:44:37 +03:00
|
|
|
NT seems to do that */
|
2003-05-31 03:12:03 +03:00
|
|
|
UT_LIST_NODE_T(os_mutex_str_t) os_mutex_list;
|
|
|
|
/* list of all 'slow' OS mutexes created */
|
2001-02-17 14:19:19 +02:00
|
|
|
};
|
|
|
|
|
2003-06-02 13:11:20 +03:00
|
|
|
/* Mutex protecting counts and the lists of OS mutexes and events */
|
2003-05-31 03:12:03 +03:00
|
|
|
os_mutex_t os_sync_mutex;
|
|
|
|
ibool os_sync_mutex_inited = FALSE;
|
This ChangeSet must be null-merged to 5.1. Applied innodb-5.0-ss982, -ss998, -ss1003
Fixes:
- Bug #15815: Very poor performance with multiple queries running concurrently
- Bug #22868: 'Thread thrashing' with > 50 concurrent conns under an upd-intensive workloadw
- Bug #23769: Debug assertion failure with innodb_locks_unsafe_for_binlog
- Bug #24089: Race condition in fil_flush_file_spaces()
innobase/buf/buf0buf.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/buf/buf0flu.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/buf/buf0lru.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/dict/dict0crea.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/fil/fil0fil.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1003:
branches/5.0: Merge r1002 from trunk:
fil_flush_file_spaces(): Copy the system->unflushed_spaces list to an
array while holding the mutex. This removes the crash-triggering
race condition that was introduced when fixing Bug 15653. (Bug #24089)
innobase/include/buf0buf.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/include/buf0buf.ic:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/include/dict0crea.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/include/sync0arr.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0rw.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0rw.ic:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0sync.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/os/os0sync.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/row/row0mysql.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/row/row0sel.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r982:
branches/5.0: row_sel(): Do not try to acquire a LOCK_REC_NOT_GAP lock
on the supremum record. Instead, skip to the next record. (Bug #23769)
This fix was backported from r623 in the 5.1 tree.
innobase/srv/srv0start.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r926:
Refer to bug: 22268. Since no one tries to run 5.0 on Windows 95/ME it was
decided to raise the limit of srv_max_n_threads to 10000 on Windows.
innobase/sync/sync0arr.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/sync/sync0rw.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/sync/sync0sync.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r969:
branches/5.0: Port r968 from trunk:
sync_thread_add_level(): When level == SYNC_TREE_NODE, allow the latching
order to be violated if the thread holds dict_operation_lock, whose level is
SYNC_DICT_OPERATION. This removes the assertion failure of TRUNCATE TABLE
#ifdef UNIV_SYNC_DEBUG.
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
2006-11-09 05:02:37 +01:00
|
|
|
ibool os_sync_free_called = FALSE;
|
2003-05-30 22:44:37 +03:00
|
|
|
|
|
|
|
/* This is incremented by 1 in os_thread_create and decremented by 1 in
|
|
|
|
os_thread_exit */
|
2003-06-02 13:11:20 +03:00
|
|
|
ulint os_thread_count = 0;
|
2003-05-31 03:12:03 +03:00
|
|
|
|
2003-06-02 13:11:20 +03:00
|
|
|
/* The list of all events created */
|
2003-05-31 03:12:03 +03:00
|
|
|
UT_LIST_BASE_NODE_T(os_event_struct_t) os_event_list;
|
|
|
|
|
|
|
|
/* The list of all OS 'slow' mutexes */
|
|
|
|
UT_LIST_BASE_NODE_T(os_mutex_str_t) os_mutex_list;
|
|
|
|
|
2003-06-02 13:11:20 +03:00
|
|
|
ulint os_event_count = 0;
|
|
|
|
ulint os_mutex_count = 0;
|
|
|
|
ulint os_fast_mutex_count = 0;
|
2003-05-31 03:12:03 +03:00
|
|
|
|
This ChangeSet must be null-merged to 5.1. Applied innodb-5.0-ss982, -ss998, -ss1003
Fixes:
- Bug #15815: Very poor performance with multiple queries running concurrently
- Bug #22868: 'Thread thrashing' with > 50 concurrent conns under an upd-intensive workloadw
- Bug #23769: Debug assertion failure with innodb_locks_unsafe_for_binlog
- Bug #24089: Race condition in fil_flush_file_spaces()
innobase/buf/buf0buf.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/buf/buf0flu.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/buf/buf0lru.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/dict/dict0crea.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/fil/fil0fil.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1003:
branches/5.0: Merge r1002 from trunk:
fil_flush_file_spaces(): Copy the system->unflushed_spaces list to an
array while holding the mutex. This removes the crash-triggering
race condition that was introduced when fixing Bug 15653. (Bug #24089)
innobase/include/buf0buf.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/include/buf0buf.ic:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/include/dict0crea.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/include/sync0arr.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0rw.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0rw.ic:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0sync.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/os/os0sync.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/row/row0mysql.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/row/row0sel.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r982:
branches/5.0: row_sel(): Do not try to acquire a LOCK_REC_NOT_GAP lock
on the supremum record. Instead, skip to the next record. (Bug #23769)
This fix was backported from r623 in the 5.1 tree.
innobase/srv/srv0start.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r926:
Refer to bug: 22268. Since no one tries to run 5.0 on Windows 95/ME it was
decided to raise the limit of srv_max_n_threads to 10000 on Windows.
innobase/sync/sync0arr.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/sync/sync0rw.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/sync/sync0sync.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r969:
branches/5.0: Port r968 from trunk:
sync_thread_add_level(): When level == SYNC_TREE_NODE, allow the latching
order to be violated if the thread holds dict_operation_lock, whose level is
SYNC_DICT_OPERATION. This removes the assertion failure of TRUNCATE TABLE
#ifdef UNIV_SYNC_DEBUG.
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
2006-11-09 05:02:37 +01:00
|
|
|
/* Because a mutex is embedded inside an event and there is an
|
|
|
|
event embedded inside a mutex, on free, this generates a recursive call.
|
|
|
|
This version of the free event function doesn't acquire the global lock */
|
|
|
|
static void os_event_free_internal(os_event_t event);
|
2003-05-31 03:12:03 +03:00
|
|
|
|
|
|
|
/*************************************************************
|
|
|
|
Initializes global event and OS 'slow' mutex lists. */
|
|
|
|
|
|
|
|
void
|
|
|
|
os_sync_init(void)
|
|
|
|
/*==============*/
|
|
|
|
{
|
|
|
|
UT_LIST_INIT(os_event_list);
|
|
|
|
UT_LIST_INIT(os_mutex_list);
|
|
|
|
|
|
|
|
os_sync_mutex = os_mutex_create(NULL);
|
|
|
|
|
|
|
|
os_sync_mutex_inited = TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*************************************************************
|
2003-06-02 13:11:20 +03:00
|
|
|
Frees created events and OS 'slow' mutexes. */
|
2003-05-31 03:12:03 +03:00
|
|
|
|
|
|
|
void
|
|
|
|
os_sync_free(void)
|
|
|
|
/*==============*/
|
|
|
|
{
|
|
|
|
os_event_t event;
|
|
|
|
os_mutex_t mutex;
|
|
|
|
|
This ChangeSet must be null-merged to 5.1. Applied innodb-5.0-ss982, -ss998, -ss1003
Fixes:
- Bug #15815: Very poor performance with multiple queries running concurrently
- Bug #22868: 'Thread thrashing' with > 50 concurrent conns under an upd-intensive workloadw
- Bug #23769: Debug assertion failure with innodb_locks_unsafe_for_binlog
- Bug #24089: Race condition in fil_flush_file_spaces()
innobase/buf/buf0buf.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/buf/buf0flu.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/buf/buf0lru.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/dict/dict0crea.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/fil/fil0fil.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1003:
branches/5.0: Merge r1002 from trunk:
fil_flush_file_spaces(): Copy the system->unflushed_spaces list to an
array while holding the mutex. This removes the crash-triggering
race condition that was introduced when fixing Bug 15653. (Bug #24089)
innobase/include/buf0buf.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/include/buf0buf.ic:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/include/dict0crea.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/include/sync0arr.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0rw.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0rw.ic:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0sync.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/os/os0sync.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/row/row0mysql.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/row/row0sel.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r982:
branches/5.0: row_sel(): Do not try to acquire a LOCK_REC_NOT_GAP lock
on the supremum record. Instead, skip to the next record. (Bug #23769)
This fix was backported from r623 in the 5.1 tree.
innobase/srv/srv0start.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r926:
Refer to bug: 22268. Since no one tries to run 5.0 on Windows 95/ME it was
decided to raise the limit of srv_max_n_threads to 10000 on Windows.
innobase/sync/sync0arr.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/sync/sync0rw.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/sync/sync0sync.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r969:
branches/5.0: Port r968 from trunk:
sync_thread_add_level(): When level == SYNC_TREE_NODE, allow the latching
order to be violated if the thread holds dict_operation_lock, whose level is
SYNC_DICT_OPERATION. This removes the assertion failure of TRUNCATE TABLE
#ifdef UNIV_SYNC_DEBUG.
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
2006-11-09 05:02:37 +01:00
|
|
|
os_sync_free_called = TRUE;
|
2003-05-31 03:12:03 +03:00
|
|
|
event = UT_LIST_GET_FIRST(os_event_list);
|
|
|
|
|
|
|
|
while (event) {
|
|
|
|
|
|
|
|
os_event_free(event);
|
|
|
|
|
|
|
|
event = UT_LIST_GET_FIRST(os_event_list);
|
|
|
|
}
|
|
|
|
|
|
|
|
mutex = UT_LIST_GET_FIRST(os_mutex_list);
|
|
|
|
|
|
|
|
while (mutex) {
|
2003-06-02 17:58:18 +03:00
|
|
|
if (mutex == os_sync_mutex) {
|
|
|
|
/* Set the flag to FALSE so that we do not try to
|
|
|
|
reserve os_sync_mutex any more in remaining freeing
|
|
|
|
operations in shutdown */
|
|
|
|
os_sync_mutex_inited = FALSE;
|
|
|
|
}
|
2003-05-31 03:12:03 +03:00
|
|
|
|
|
|
|
os_mutex_free(mutex);
|
|
|
|
|
|
|
|
mutex = UT_LIST_GET_FIRST(os_mutex_list);
|
|
|
|
}
|
This ChangeSet must be null-merged to 5.1. Applied innodb-5.0-ss982, -ss998, -ss1003
Fixes:
- Bug #15815: Very poor performance with multiple queries running concurrently
- Bug #22868: 'Thread thrashing' with > 50 concurrent conns under an upd-intensive workloadw
- Bug #23769: Debug assertion failure with innodb_locks_unsafe_for_binlog
- Bug #24089: Race condition in fil_flush_file_spaces()
innobase/buf/buf0buf.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/buf/buf0flu.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/buf/buf0lru.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/dict/dict0crea.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/fil/fil0fil.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1003:
branches/5.0: Merge r1002 from trunk:
fil_flush_file_spaces(): Copy the system->unflushed_spaces list to an
array while holding the mutex. This removes the crash-triggering
race condition that was introduced when fixing Bug 15653. (Bug #24089)
innobase/include/buf0buf.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/include/buf0buf.ic:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/include/dict0crea.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/include/sync0arr.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0rw.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0rw.ic:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0sync.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/os/os0sync.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/row/row0mysql.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/row/row0sel.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r982:
branches/5.0: row_sel(): Do not try to acquire a LOCK_REC_NOT_GAP lock
on the supremum record. Instead, skip to the next record. (Bug #23769)
This fix was backported from r623 in the 5.1 tree.
innobase/srv/srv0start.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r926:
Refer to bug: 22268. Since no one tries to run 5.0 on Windows 95/ME it was
decided to raise the limit of srv_max_n_threads to 10000 on Windows.
innobase/sync/sync0arr.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/sync/sync0rw.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/sync/sync0sync.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r969:
branches/5.0: Port r968 from trunk:
sync_thread_add_level(): When level == SYNC_TREE_NODE, allow the latching
order to be violated if the thread holds dict_operation_lock, whose level is
SYNC_DICT_OPERATION. This removes the assertion failure of TRUNCATE TABLE
#ifdef UNIV_SYNC_DEBUG.
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
2006-11-09 05:02:37 +01:00
|
|
|
os_sync_free_called = FALSE;
|
2003-05-31 03:12:03 +03:00
|
|
|
}
|
2003-05-30 22:44:37 +03:00
|
|
|
|
2001-02-17 14:19:19 +02:00
|
|
|
/*************************************************************
|
2003-06-02 13:11:20 +03:00
|
|
|
Creates an event semaphore, i.e., a semaphore which may just have two
|
|
|
|
states: signaled and nonsignaled. The created event is manual reset: it
|
|
|
|
must be reset explicitly by calling sync_os_reset_event. */
|
2001-02-17 14:19:19 +02:00
|
|
|
|
|
|
|
os_event_t
|
|
|
|
os_event_create(
|
|
|
|
/*============*/
|
2004-05-17 14:40:31 +03:00
|
|
|
/* out: the event handle */
|
|
|
|
const char* name) /* in: the name of the event, if NULL
|
|
|
|
the event is created without a name */
|
2001-02-17 14:19:19 +02:00
|
|
|
{
|
|
|
|
#ifdef __WIN__
|
2003-05-31 03:12:03 +03:00
|
|
|
os_event_t event;
|
|
|
|
|
2003-06-02 13:11:20 +03:00
|
|
|
event = ut_malloc(sizeof(struct os_event_struct));
|
|
|
|
|
|
|
|
event->handle = CreateEvent(NULL,/* No security attributes */
|
2001-02-17 14:19:19 +02:00
|
|
|
TRUE, /* Manual reset */
|
|
|
|
FALSE, /* Initial state nonsignaled */
|
2005-06-10 14:18:36 +03:00
|
|
|
(LPCTSTR) name);
|
2003-06-02 13:11:20 +03:00
|
|
|
if (!event->handle) {
|
2002-09-08 00:21:13 +03:00
|
|
|
fprintf(stderr,
|
|
|
|
"InnoDB: Could not create a Windows event semaphore; Windows error %lu\n",
|
2003-12-20 03:41:04 +02:00
|
|
|
(ulong) GetLastError());
|
2002-09-08 00:21:13 +03:00
|
|
|
}
|
2003-06-02 13:11:20 +03:00
|
|
|
#else /* Unix */
|
2001-02-17 14:19:19 +02:00
|
|
|
os_event_t event;
|
|
|
|
|
|
|
|
UT_NOT_USED(name);
|
|
|
|
|
|
|
|
event = ut_malloc(sizeof(struct os_event_struct));
|
|
|
|
|
|
|
|
os_fast_mutex_init(&(event->os_mutex));
|
|
|
|
|
Many files:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
sql/ha_innodb.cc:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/dict/dict0crea.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/dict/dict0dict.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/include/log0recv.h:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/include/row0mysql.h:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/include/srv0srv.h:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/include/trx0trx.h:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/log/log0recv.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/os/os0sync.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/os/os0thread.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0ins.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0mysql.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0purge.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0undo.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0upd.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/srv/srv0srv.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/srv/srv0start.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/trx/trx0roll.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/trx/trx0trx.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
2002-11-06 00:41:27 +02:00
|
|
|
#if defined(UNIV_HOTBACKUP) && defined(UNIV_HPUX10)
|
2003-05-14 20:22:55 +03:00
|
|
|
ut_a(0 == pthread_cond_init(&(event->cond_var),
|
|
|
|
pthread_condattr_default));
|
Many files:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
sql/ha_innodb.cc:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/dict/dict0crea.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/dict/dict0dict.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/include/log0recv.h:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/include/row0mysql.h:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/include/srv0srv.h:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/include/trx0trx.h:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/log/log0recv.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/os/os0sync.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/os/os0thread.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0ins.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0mysql.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0purge.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0undo.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0upd.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/srv/srv0srv.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/srv/srv0start.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/trx/trx0roll.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/trx/trx0trx.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
2002-11-06 00:41:27 +02:00
|
|
|
#else
|
2003-05-14 20:22:55 +03:00
|
|
|
ut_a(0 == pthread_cond_init(&(event->cond_var), NULL));
|
Many files:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
sql/ha_innodb.cc:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/dict/dict0crea.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/dict/dict0dict.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/include/log0recv.h:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/include/row0mysql.h:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/include/srv0srv.h:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/include/trx0trx.h:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/log/log0recv.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/os/os0sync.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/os/os0thread.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0ins.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0mysql.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0purge.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0undo.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0upd.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/srv/srv0srv.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/srv/srv0start.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/trx/trx0roll.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/trx/trx0trx.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
2002-11-06 00:41:27 +02:00
|
|
|
#endif
|
2001-02-21 01:11:32 +02:00
|
|
|
event->is_set = FALSE;
|
2003-07-03 21:25:55 +03:00
|
|
|
event->signal_count = 0;
|
2003-06-02 13:11:20 +03:00
|
|
|
#endif /* __WIN__ */
|
2001-02-17 14:19:19 +02:00
|
|
|
|
This ChangeSet must be null-merged to 5.1. Applied innodb-5.0-ss982, -ss998, -ss1003
Fixes:
- Bug #15815: Very poor performance with multiple queries running concurrently
- Bug #22868: 'Thread thrashing' with > 50 concurrent conns under an upd-intensive workloadw
- Bug #23769: Debug assertion failure with innodb_locks_unsafe_for_binlog
- Bug #24089: Race condition in fil_flush_file_spaces()
innobase/buf/buf0buf.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/buf/buf0flu.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/buf/buf0lru.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/dict/dict0crea.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/fil/fil0fil.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1003:
branches/5.0: Merge r1002 from trunk:
fil_flush_file_spaces(): Copy the system->unflushed_spaces list to an
array while holding the mutex. This removes the crash-triggering
race condition that was introduced when fixing Bug 15653. (Bug #24089)
innobase/include/buf0buf.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/include/buf0buf.ic:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/include/dict0crea.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/include/sync0arr.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0rw.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0rw.ic:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0sync.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/os/os0sync.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/row/row0mysql.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/row/row0sel.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r982:
branches/5.0: row_sel(): Do not try to acquire a LOCK_REC_NOT_GAP lock
on the supremum record. Instead, skip to the next record. (Bug #23769)
This fix was backported from r623 in the 5.1 tree.
innobase/srv/srv0start.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r926:
Refer to bug: 22268. Since no one tries to run 5.0 on Windows 95/ME it was
decided to raise the limit of srv_max_n_threads to 10000 on Windows.
innobase/sync/sync0arr.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/sync/sync0rw.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/sync/sync0sync.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r969:
branches/5.0: Port r968 from trunk:
sync_thread_add_level(): When level == SYNC_TREE_NODE, allow the latching
order to be violated if the thread holds dict_operation_lock, whose level is
SYNC_DICT_OPERATION. This removes the assertion failure of TRUNCATE TABLE
#ifdef UNIV_SYNC_DEBUG.
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
2006-11-09 05:02:37 +01:00
|
|
|
/* The os_sync_mutex can be NULL because during startup an event
|
|
|
|
can be created [ because it's embedded in the mutex/rwlock ] before
|
|
|
|
this module has been initialized */
|
|
|
|
if (os_sync_mutex != NULL) {
|
|
|
|
os_mutex_enter(os_sync_mutex);
|
|
|
|
}
|
2003-05-31 03:12:03 +03:00
|
|
|
|
This ChangeSet must be null-merged to 5.1. Applied innodb-5.0-ss982, -ss998, -ss1003
Fixes:
- Bug #15815: Very poor performance with multiple queries running concurrently
- Bug #22868: 'Thread thrashing' with > 50 concurrent conns under an upd-intensive workloadw
- Bug #23769: Debug assertion failure with innodb_locks_unsafe_for_binlog
- Bug #24089: Race condition in fil_flush_file_spaces()
innobase/buf/buf0buf.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/buf/buf0flu.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/buf/buf0lru.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/dict/dict0crea.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/fil/fil0fil.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1003:
branches/5.0: Merge r1002 from trunk:
fil_flush_file_spaces(): Copy the system->unflushed_spaces list to an
array while holding the mutex. This removes the crash-triggering
race condition that was introduced when fixing Bug 15653. (Bug #24089)
innobase/include/buf0buf.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/include/buf0buf.ic:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/include/dict0crea.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/include/sync0arr.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0rw.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0rw.ic:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0sync.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/os/os0sync.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/row/row0mysql.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/row/row0sel.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r982:
branches/5.0: row_sel(): Do not try to acquire a LOCK_REC_NOT_GAP lock
on the supremum record. Instead, skip to the next record. (Bug #23769)
This fix was backported from r623 in the 5.1 tree.
innobase/srv/srv0start.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r926:
Refer to bug: 22268. Since no one tries to run 5.0 on Windows 95/ME it was
decided to raise the limit of srv_max_n_threads to 10000 on Windows.
innobase/sync/sync0arr.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/sync/sync0rw.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/sync/sync0sync.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r969:
branches/5.0: Port r968 from trunk:
sync_thread_add_level(): When level == SYNC_TREE_NODE, allow the latching
order to be violated if the thread holds dict_operation_lock, whose level is
SYNC_DICT_OPERATION. This removes the assertion failure of TRUNCATE TABLE
#ifdef UNIV_SYNC_DEBUG.
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
2006-11-09 05:02:37 +01:00
|
|
|
/* Put to the list of events */
|
2003-05-31 03:12:03 +03:00
|
|
|
UT_LIST_ADD_FIRST(os_event_list, os_event_list, event);
|
|
|
|
|
|
|
|
os_event_count++;
|
|
|
|
|
This ChangeSet must be null-merged to 5.1. Applied innodb-5.0-ss982, -ss998, -ss1003
Fixes:
- Bug #15815: Very poor performance with multiple queries running concurrently
- Bug #22868: 'Thread thrashing' with > 50 concurrent conns under an upd-intensive workloadw
- Bug #23769: Debug assertion failure with innodb_locks_unsafe_for_binlog
- Bug #24089: Race condition in fil_flush_file_spaces()
innobase/buf/buf0buf.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/buf/buf0flu.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/buf/buf0lru.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/dict/dict0crea.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/fil/fil0fil.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1003:
branches/5.0: Merge r1002 from trunk:
fil_flush_file_spaces(): Copy the system->unflushed_spaces list to an
array while holding the mutex. This removes the crash-triggering
race condition that was introduced when fixing Bug 15653. (Bug #24089)
innobase/include/buf0buf.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/include/buf0buf.ic:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/include/dict0crea.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/include/sync0arr.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0rw.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0rw.ic:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0sync.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/os/os0sync.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/row/row0mysql.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/row/row0sel.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r982:
branches/5.0: row_sel(): Do not try to acquire a LOCK_REC_NOT_GAP lock
on the supremum record. Instead, skip to the next record. (Bug #23769)
This fix was backported from r623 in the 5.1 tree.
innobase/srv/srv0start.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r926:
Refer to bug: 22268. Since no one tries to run 5.0 on Windows 95/ME it was
decided to raise the limit of srv_max_n_threads to 10000 on Windows.
innobase/sync/sync0arr.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/sync/sync0rw.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/sync/sync0sync.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r969:
branches/5.0: Port r968 from trunk:
sync_thread_add_level(): When level == SYNC_TREE_NODE, allow the latching
order to be violated if the thread holds dict_operation_lock, whose level is
SYNC_DICT_OPERATION. This removes the assertion failure of TRUNCATE TABLE
#ifdef UNIV_SYNC_DEBUG.
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
2006-11-09 05:02:37 +01:00
|
|
|
if (os_sync_mutex != NULL) {
|
|
|
|
os_mutex_exit(os_sync_mutex);
|
|
|
|
}
|
2003-05-31 03:12:03 +03:00
|
|
|
|
2001-02-17 14:19:19 +02:00
|
|
|
return(event);
|
|
|
|
}
|
|
|
|
|
2003-06-02 13:11:20 +03:00
|
|
|
#ifdef __WIN__
|
2001-02-17 14:19:19 +02:00
|
|
|
/*************************************************************
|
2003-06-02 13:11:20 +03:00
|
|
|
Creates an auto-reset event semaphore, i.e., an event which is automatically
|
|
|
|
reset when a single thread is released. Works only in Windows. */
|
2001-02-17 14:19:19 +02:00
|
|
|
|
|
|
|
os_event_t
|
|
|
|
os_event_create_auto(
|
|
|
|
/*=================*/
|
2004-05-17 14:40:31 +03:00
|
|
|
/* out: the event handle */
|
|
|
|
const char* name) /* in: the name of the event, if NULL
|
|
|
|
the event is created without a name */
|
2001-02-17 14:19:19 +02:00
|
|
|
{
|
2003-05-31 03:12:03 +03:00
|
|
|
os_event_t event;
|
2001-02-17 14:19:19 +02:00
|
|
|
|
2003-06-02 13:11:20 +03:00
|
|
|
event = ut_malloc(sizeof(struct os_event_struct));
|
|
|
|
|
|
|
|
event->handle = CreateEvent(NULL,/* No security attributes */
|
2001-02-17 14:19:19 +02:00
|
|
|
FALSE, /* Auto-reset */
|
|
|
|
FALSE, /* Initial state nonsignaled */
|
2005-06-10 14:18:36 +03:00
|
|
|
(LPCTSTR) name);
|
2001-02-17 14:19:19 +02:00
|
|
|
|
2003-06-02 13:11:20 +03:00
|
|
|
if (!event->handle) {
|
|
|
|
fprintf(stderr,
|
|
|
|
"InnoDB: Could not create a Windows auto event semaphore; Windows error %lu\n",
|
2003-12-20 03:41:04 +02:00
|
|
|
(ulong) GetLastError());
|
2003-06-02 13:11:20 +03:00
|
|
|
}
|
2001-02-17 14:19:19 +02:00
|
|
|
|
2003-06-02 13:11:20 +03:00
|
|
|
/* Put to the list of events */
|
|
|
|
os_mutex_enter(os_sync_mutex);
|
|
|
|
|
|
|
|
UT_LIST_ADD_FIRST(os_event_list, os_event_list, event);
|
2001-02-17 14:19:19 +02:00
|
|
|
|
2003-06-02 13:11:20 +03:00
|
|
|
os_event_count++;
|
2003-05-31 03:12:03 +03:00
|
|
|
|
2003-06-02 13:11:20 +03:00
|
|
|
os_mutex_exit(os_sync_mutex);
|
|
|
|
|
|
|
|
return(event);
|
2001-02-17 14:19:19 +02:00
|
|
|
}
|
2003-06-02 13:11:20 +03:00
|
|
|
#endif
|
2001-02-17 14:19:19 +02:00
|
|
|
|
|
|
|
/**************************************************************
|
|
|
|
Sets an event semaphore to the signaled state: lets waiting threads
|
|
|
|
proceed. */
|
|
|
|
|
|
|
|
void
|
|
|
|
os_event_set(
|
|
|
|
/*=========*/
|
|
|
|
os_event_t event) /* in: event to set */
|
|
|
|
{
|
ut0ut.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0pool.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0file.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0shm.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0thread.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
page0page.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
que0que.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0ins.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0mysql.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0sel.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0upd.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0vers.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0srv.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0start.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0arr.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0rw.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0sync.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
trx0rec.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
trx0trx.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0srv.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0rw.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0sync.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
ut0dbg.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
lock0lock.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
log0log.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
log0recv.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
ibuf0ibuf.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
hash0hash.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mach0data.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0mem.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0pool.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mtr0mtr.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0file.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0thread.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
univ.i Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0mysql.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
com0shm.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
data0data.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
data0type.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
dict0crea.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
dict0dict.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fil0fil.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fsp0fsp.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fut0lst.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0sea.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0flu.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0btr.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0cur.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0btr.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0cur.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0sea.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/buf/buf0buf.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/buf/buf0flu.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/com/com0shm.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/data/data0data.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/data/data0type.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/dict/dict0crea.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/dict/dict0dict.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fil/fil0fil.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fsp/fsp0fsp.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fut/fut0lst.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/ibuf/ibuf0ibuf.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/buf0buf.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/buf0buf.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/hash0hash.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mach0data.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mem0mem.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mem0pool.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mtr0mtr.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0file.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0sync.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0sync.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0thread.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/row0mysql.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/univ.i:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/srv0srv.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/sync0rw.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/sync0sync.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/ut0dbg.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/lock/lock0lock.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/log/log0log.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/log/log0recv.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/mem/mem0pool.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0file.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0shm.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0sync.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0thread.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/page/page0page.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/que/que0que.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0ins.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0mysql.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0sel.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0upd.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0vers.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/srv/srv0srv.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/srv/srv0start.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0arr.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0rw.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0sync.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/trx/trx0rec.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/trx/trx0trx.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/ut/ut0ut.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
2001-03-02 17:33:11 +02:00
|
|
|
#ifdef __WIN__
|
2001-02-17 14:19:19 +02:00
|
|
|
ut_a(event);
|
2003-06-02 13:11:20 +03:00
|
|
|
ut_a(SetEvent(event->handle));
|
2001-02-17 14:19:19 +02:00
|
|
|
#else
|
|
|
|
ut_a(event);
|
|
|
|
|
|
|
|
os_fast_mutex_lock(&(event->os_mutex));
|
|
|
|
|
|
|
|
if (event->is_set) {
|
|
|
|
/* Do nothing */
|
|
|
|
} else {
|
|
|
|
event->is_set = TRUE;
|
2003-07-03 21:25:55 +03:00
|
|
|
event->signal_count += 1;
|
2003-05-14 20:22:55 +03:00
|
|
|
ut_a(0 == pthread_cond_broadcast(&(event->cond_var)));
|
2001-02-17 14:19:19 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
os_fast_mutex_unlock(&(event->os_mutex));
|
ut0ut.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0pool.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0file.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0shm.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0thread.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
page0page.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
que0que.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0ins.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0mysql.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0sel.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0upd.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0vers.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0srv.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0start.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0arr.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0rw.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0sync.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
trx0rec.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
trx0trx.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0srv.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0rw.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0sync.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
ut0dbg.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
lock0lock.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
log0log.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
log0recv.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
ibuf0ibuf.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
hash0hash.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mach0data.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0mem.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0pool.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mtr0mtr.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0file.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0thread.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
univ.i Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0mysql.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
com0shm.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
data0data.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
data0type.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
dict0crea.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
dict0dict.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fil0fil.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fsp0fsp.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fut0lst.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0sea.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0flu.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0btr.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0cur.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0btr.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0cur.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0sea.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/buf/buf0buf.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/buf/buf0flu.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/com/com0shm.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/data/data0data.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/data/data0type.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/dict/dict0crea.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/dict/dict0dict.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fil/fil0fil.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fsp/fsp0fsp.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fut/fut0lst.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/ibuf/ibuf0ibuf.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/buf0buf.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/buf0buf.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/hash0hash.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mach0data.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mem0mem.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mem0pool.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mtr0mtr.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0file.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0sync.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0sync.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0thread.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/row0mysql.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/univ.i:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/srv0srv.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/sync0rw.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/sync0sync.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/ut0dbg.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/lock/lock0lock.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/log/log0log.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/log/log0recv.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/mem/mem0pool.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0file.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0shm.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0sync.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0thread.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/page/page0page.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/que/que0que.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0ins.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0mysql.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0sel.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0upd.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0vers.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/srv/srv0srv.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/srv/srv0start.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0arr.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0rw.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0sync.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/trx/trx0rec.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/trx/trx0trx.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/ut/ut0ut.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
2001-03-02 17:33:11 +02:00
|
|
|
#endif
|
2001-02-17 14:19:19 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**************************************************************
|
|
|
|
Resets an event semaphore to the nonsignaled state. Waiting threads will
|
|
|
|
stop to wait for the event. */
|
|
|
|
|
|
|
|
void
|
|
|
|
os_event_reset(
|
|
|
|
/*===========*/
|
|
|
|
os_event_t event) /* in: event to reset */
|
|
|
|
{
|
|
|
|
#ifdef __WIN__
|
|
|
|
ut_a(event);
|
|
|
|
|
2003-06-02 13:11:20 +03:00
|
|
|
ut_a(ResetEvent(event->handle));
|
2001-02-17 14:19:19 +02:00
|
|
|
#else
|
|
|
|
ut_a(event);
|
|
|
|
|
|
|
|
os_fast_mutex_lock(&(event->os_mutex));
|
|
|
|
|
|
|
|
if (!event->is_set) {
|
|
|
|
/* Do nothing */
|
|
|
|
} else {
|
|
|
|
event->is_set = FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
os_fast_mutex_unlock(&(event->os_mutex));
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
This ChangeSet must be null-merged to 5.1. Applied innodb-5.0-ss982, -ss998, -ss1003
Fixes:
- Bug #15815: Very poor performance with multiple queries running concurrently
- Bug #22868: 'Thread thrashing' with > 50 concurrent conns under an upd-intensive workloadw
- Bug #23769: Debug assertion failure with innodb_locks_unsafe_for_binlog
- Bug #24089: Race condition in fil_flush_file_spaces()
innobase/buf/buf0buf.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/buf/buf0flu.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/buf/buf0lru.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/dict/dict0crea.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/fil/fil0fil.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1003:
branches/5.0: Merge r1002 from trunk:
fil_flush_file_spaces(): Copy the system->unflushed_spaces list to an
array while holding the mutex. This removes the crash-triggering
race condition that was introduced when fixing Bug 15653. (Bug #24089)
innobase/include/buf0buf.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/include/buf0buf.ic:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/include/dict0crea.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/include/sync0arr.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0rw.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0rw.ic:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0sync.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/os/os0sync.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/row/row0mysql.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/row/row0sel.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r982:
branches/5.0: row_sel(): Do not try to acquire a LOCK_REC_NOT_GAP lock
on the supremum record. Instead, skip to the next record. (Bug #23769)
This fix was backported from r623 in the 5.1 tree.
innobase/srv/srv0start.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r926:
Refer to bug: 22268. Since no one tries to run 5.0 on Windows 95/ME it was
decided to raise the limit of srv_max_n_threads to 10000 on Windows.
innobase/sync/sync0arr.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/sync/sync0rw.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/sync/sync0sync.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r969:
branches/5.0: Port r968 from trunk:
sync_thread_add_level(): When level == SYNC_TREE_NODE, allow the latching
order to be violated if the thread holds dict_operation_lock, whose level is
SYNC_DICT_OPERATION. This removes the assertion failure of TRUNCATE TABLE
#ifdef UNIV_SYNC_DEBUG.
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
2006-11-09 05:02:37 +01:00
|
|
|
/**************************************************************
|
|
|
|
Frees an event object, without acquiring the global lock. */
|
|
|
|
static
|
|
|
|
void
|
|
|
|
os_event_free_internal(
|
|
|
|
/*===================*/
|
|
|
|
os_event_t event) /* in: event to free */
|
|
|
|
{
|
|
|
|
#ifdef __WIN__
|
|
|
|
ut_a(event);
|
|
|
|
|
|
|
|
ut_a(CloseHandle(event->handle));
|
|
|
|
#else
|
|
|
|
ut_a(event);
|
|
|
|
|
|
|
|
/* This is to avoid freeing the mutex twice */
|
|
|
|
os_fast_mutex_free(&(event->os_mutex));
|
|
|
|
|
|
|
|
ut_a(0 == pthread_cond_destroy(&(event->cond_var)));
|
|
|
|
#endif
|
|
|
|
/* Remove from the list of events */
|
|
|
|
|
|
|
|
UT_LIST_REMOVE(os_event_list, os_event_list, event);
|
|
|
|
|
|
|
|
os_event_count--;
|
|
|
|
|
|
|
|
ut_free(event);
|
|
|
|
}
|
|
|
|
|
2001-02-17 14:19:19 +02:00
|
|
|
/**************************************************************
|
|
|
|
Frees an event object. */
|
|
|
|
|
|
|
|
void
|
|
|
|
os_event_free(
|
|
|
|
/*==========*/
|
|
|
|
os_event_t event) /* in: event to free */
|
ut0ut.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0pool.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0file.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0shm.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0thread.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
page0page.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
que0que.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0ins.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0mysql.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0sel.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0upd.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0vers.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0srv.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0start.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0arr.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0rw.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0sync.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
trx0rec.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
trx0trx.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0srv.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0rw.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0sync.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
ut0dbg.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
lock0lock.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
log0log.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
log0recv.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
ibuf0ibuf.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
hash0hash.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mach0data.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0mem.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0pool.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mtr0mtr.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0file.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0thread.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
univ.i Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0mysql.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
com0shm.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
data0data.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
data0type.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
dict0crea.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
dict0dict.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fil0fil.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fsp0fsp.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fut0lst.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0sea.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0flu.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0btr.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0cur.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0btr.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0cur.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0sea.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/buf/buf0buf.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/buf/buf0flu.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/com/com0shm.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/data/data0data.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/data/data0type.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/dict/dict0crea.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/dict/dict0dict.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fil/fil0fil.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fsp/fsp0fsp.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fut/fut0lst.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/ibuf/ibuf0ibuf.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/buf0buf.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/buf0buf.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/hash0hash.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mach0data.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mem0mem.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mem0pool.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mtr0mtr.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0file.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0sync.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0sync.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0thread.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/row0mysql.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/univ.i:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/srv0srv.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/sync0rw.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/sync0sync.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/ut0dbg.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/lock/lock0lock.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/log/log0log.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/log/log0recv.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/mem/mem0pool.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0file.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0shm.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0sync.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0thread.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/page/page0page.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/que/que0que.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0ins.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0mysql.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0sel.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0upd.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0vers.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/srv/srv0srv.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/srv/srv0start.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0arr.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0rw.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0sync.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/trx/trx0rec.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/trx/trx0trx.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/ut/ut0ut.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
2001-03-02 17:33:11 +02:00
|
|
|
|
2001-02-17 14:19:19 +02:00
|
|
|
{
|
|
|
|
#ifdef __WIN__
|
|
|
|
ut_a(event);
|
|
|
|
|
2003-06-02 13:11:20 +03:00
|
|
|
ut_a(CloseHandle(event->handle));
|
2001-02-17 14:19:19 +02:00
|
|
|
#else
|
|
|
|
ut_a(event);
|
|
|
|
|
|
|
|
os_fast_mutex_free(&(event->os_mutex));
|
2003-05-14 20:22:55 +03:00
|
|
|
ut_a(0 == pthread_cond_destroy(&(event->cond_var)));
|
2003-06-02 13:11:20 +03:00
|
|
|
#endif
|
|
|
|
/* Remove from the list of events */
|
2001-02-17 14:19:19 +02:00
|
|
|
|
2003-05-31 03:12:03 +03:00
|
|
|
os_mutex_enter(os_sync_mutex);
|
|
|
|
|
|
|
|
UT_LIST_REMOVE(os_event_list, os_event_list, event);
|
|
|
|
|
|
|
|
os_event_count--;
|
|
|
|
|
|
|
|
os_mutex_exit(os_sync_mutex);
|
|
|
|
|
2001-02-17 14:19:19 +02:00
|
|
|
ut_free(event);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**************************************************************
|
2003-05-30 22:44:37 +03:00
|
|
|
Waits for an event object until it is in the signaled state. If
|
|
|
|
srv_shutdown_state == SRV_SHUTDOWN_EXIT_THREADS this also exits the
|
|
|
|
waiting thread when the event becomes signaled (or immediately if the
|
|
|
|
event is already in the signaled state). */
|
2001-02-17 14:19:19 +02:00
|
|
|
|
|
|
|
void
|
|
|
|
os_event_wait(
|
|
|
|
/*==========*/
|
|
|
|
os_event_t event) /* in: event to wait */
|
|
|
|
{
|
|
|
|
#ifdef __WIN__
|
|
|
|
DWORD err;
|
|
|
|
|
|
|
|
ut_a(event);
|
|
|
|
|
|
|
|
/* Specify an infinite time limit for waiting */
|
2003-06-02 13:11:20 +03:00
|
|
|
err = WaitForSingleObject(event->handle, INFINITE);
|
2001-02-17 14:19:19 +02:00
|
|
|
|
|
|
|
ut_a(err == WAIT_OBJECT_0);
|
2003-05-30 22:44:37 +03:00
|
|
|
|
|
|
|
if (srv_shutdown_state == SRV_SHUTDOWN_EXIT_THREADS) {
|
|
|
|
os_thread_exit(NULL);
|
|
|
|
}
|
2001-02-17 14:19:19 +02:00
|
|
|
#else
|
2003-07-03 21:25:55 +03:00
|
|
|
ib_longlong old_signal_count;
|
|
|
|
|
2001-02-21 01:11:32 +02:00
|
|
|
os_fast_mutex_lock(&(event->os_mutex));
|
2003-07-03 21:25:55 +03:00
|
|
|
|
|
|
|
old_signal_count = event->signal_count;
|
|
|
|
|
Fixed: BUG#15653, BUG#16157, BUG#16229, BUG#16298, BUG#16387, BUG#16582.
Applied innodb-5.0-ss149/162 snapshots.
innobase/btr/btr0sea.c:
Applied innodb-5.0-149/162 snapshots.
Account for a race condition when dropping the adaptive hash
index for a B-tree page (Bug #16582).
btr_search_drop_page_hash_index(): Retry the operation if a
hash index with different parameters was built meanwhile.
Add diagnostics for the case that hash node pointers to
the page remain. This fix is from Heikki.
btr_search_info-update_hash(), btr_search_info_update_slow():
Document the parameter "info" as in/out.
innobase/dict/dict0dict.c:
Applied innodb-5.0-149/162 snapshots.
Do not mistake TABLENAME_ibfk_0 for auto generated id (Bug #16387).
dict_table_get_highest_foreign_id(): Ignore foreign constraint
identifiers starting with the pattern TABLENAME_ibfk_0.
innobase/dict/dict0load.c:
Applied innodb-5.0-149/162 snapshots.
dict_load_columns(): Set the charset-collation code
DATA_MYSQL_BINARY_CHARSET_COLL for those binary string columns
that lack a charset-collation code, i.e., the tables were created
with an older version of MySQL/InnoDB than 4.1.2 (Bug #16298).
innobase/fil/fil0fil.c:
Applied innodb-5.0-149/162 snapshots.
Keep track on unflushed modifications to file spaces. When there
are tens of thousands of file spaces, flushing all files in
fil_flush_file_spaces() would be very slow (Bug #15653).
fil_flush_file_spaces(): Only flush unflushed file spaces.
fil_space_t, fil_system_t: Add a list of unflushed spaces.
innobase/include/univ.i:
Applied innodb-5.0-149/162 snapshots.
Avoid breaking --with-debug builds on QNS and other systems
whose compiler pretends to be GCC 2.
Outside __WIN__ define UNIV_INLINE as static inline.
innobase/os/os0sync.c:
Applied innodb-5.0-149/162 snapshots.
Replace goto in os_event_wait with a normal loop.
innobase/srv/srv0start.c:
Applied innodb-5.0-149/162 snapshots.
Fix bug #16157, a crash when innodb_log_group_home_dir is set
to an empty string. This patch is from Heikki.
mysql-test/r/innodb.result:
Applied innodb-5.0-149/162 snapshots.
Fixed results for added test cases.
mysql-test/t/innodb.test:
Applied innodb-5.0-149/162 snapshots.
Added test cases.
sql/ha_innodb.cc:
Applied innodb-5.0-149/162 snapshots.
Remove some declarations of unused global variables and member
variables of class ha_innobase.
Added diagnostic code trx_print() to
innobase_query_caching_of_table_permitted() to find reason
why we are holding adaptive search latch.
Fixed bug #16229 MySQL/InnoDB uses full explicit table locks
in trigger processing. Take a InnoDB table lock only if user
has explicitly requested a table lock. Added some additional
comments to store_lock() and external_lock(). Fixed some
code style errors.
Remember to use noninlined versions of the functions on
ha_innodb.cc !
sql/ha_innodb.h:
Applied innodb-5.0-149/162 snapshots.
Remove some declarations of unused global variables and member
variables of class ha_innobase.
2006-01-31 21:41:48 +03:00
|
|
|
for (;;) {
|
|
|
|
if (event->is_set == TRUE
|
|
|
|
|| event->signal_count != old_signal_count) {
|
2001-02-21 01:11:32 +02:00
|
|
|
|
Fixed: BUG#15653, BUG#16157, BUG#16229, BUG#16298, BUG#16387, BUG#16582.
Applied innodb-5.0-ss149/162 snapshots.
innobase/btr/btr0sea.c:
Applied innodb-5.0-149/162 snapshots.
Account for a race condition when dropping the adaptive hash
index for a B-tree page (Bug #16582).
btr_search_drop_page_hash_index(): Retry the operation if a
hash index with different parameters was built meanwhile.
Add diagnostics for the case that hash node pointers to
the page remain. This fix is from Heikki.
btr_search_info-update_hash(), btr_search_info_update_slow():
Document the parameter "info" as in/out.
innobase/dict/dict0dict.c:
Applied innodb-5.0-149/162 snapshots.
Do not mistake TABLENAME_ibfk_0 for auto generated id (Bug #16387).
dict_table_get_highest_foreign_id(): Ignore foreign constraint
identifiers starting with the pattern TABLENAME_ibfk_0.
innobase/dict/dict0load.c:
Applied innodb-5.0-149/162 snapshots.
dict_load_columns(): Set the charset-collation code
DATA_MYSQL_BINARY_CHARSET_COLL for those binary string columns
that lack a charset-collation code, i.e., the tables were created
with an older version of MySQL/InnoDB than 4.1.2 (Bug #16298).
innobase/fil/fil0fil.c:
Applied innodb-5.0-149/162 snapshots.
Keep track on unflushed modifications to file spaces. When there
are tens of thousands of file spaces, flushing all files in
fil_flush_file_spaces() would be very slow (Bug #15653).
fil_flush_file_spaces(): Only flush unflushed file spaces.
fil_space_t, fil_system_t: Add a list of unflushed spaces.
innobase/include/univ.i:
Applied innodb-5.0-149/162 snapshots.
Avoid breaking --with-debug builds on QNS and other systems
whose compiler pretends to be GCC 2.
Outside __WIN__ define UNIV_INLINE as static inline.
innobase/os/os0sync.c:
Applied innodb-5.0-149/162 snapshots.
Replace goto in os_event_wait with a normal loop.
innobase/srv/srv0start.c:
Applied innodb-5.0-149/162 snapshots.
Fix bug #16157, a crash when innodb_log_group_home_dir is set
to an empty string. This patch is from Heikki.
mysql-test/r/innodb.result:
Applied innodb-5.0-149/162 snapshots.
Fixed results for added test cases.
mysql-test/t/innodb.test:
Applied innodb-5.0-149/162 snapshots.
Added test cases.
sql/ha_innodb.cc:
Applied innodb-5.0-149/162 snapshots.
Remove some declarations of unused global variables and member
variables of class ha_innobase.
Added diagnostic code trx_print() to
innobase_query_caching_of_table_permitted() to find reason
why we are holding adaptive search latch.
Fixed bug #16229 MySQL/InnoDB uses full explicit table locks
in trigger processing. Take a InnoDB table lock only if user
has explicitly requested a table lock. Added some additional
comments to store_lock() and external_lock(). Fixed some
code style errors.
Remember to use noninlined versions of the functions on
ha_innodb.cc !
sql/ha_innodb.h:
Applied innodb-5.0-149/162 snapshots.
Remove some declarations of unused global variables and member
variables of class ha_innobase.
2006-01-31 21:41:48 +03:00
|
|
|
os_fast_mutex_unlock(&(event->os_mutex));
|
2003-05-30 22:44:37 +03:00
|
|
|
|
Fixed: BUG#15653, BUG#16157, BUG#16229, BUG#16298, BUG#16387, BUG#16582.
Applied innodb-5.0-ss149/162 snapshots.
innobase/btr/btr0sea.c:
Applied innodb-5.0-149/162 snapshots.
Account for a race condition when dropping the adaptive hash
index for a B-tree page (Bug #16582).
btr_search_drop_page_hash_index(): Retry the operation if a
hash index with different parameters was built meanwhile.
Add diagnostics for the case that hash node pointers to
the page remain. This fix is from Heikki.
btr_search_info-update_hash(), btr_search_info_update_slow():
Document the parameter "info" as in/out.
innobase/dict/dict0dict.c:
Applied innodb-5.0-149/162 snapshots.
Do not mistake TABLENAME_ibfk_0 for auto generated id (Bug #16387).
dict_table_get_highest_foreign_id(): Ignore foreign constraint
identifiers starting with the pattern TABLENAME_ibfk_0.
innobase/dict/dict0load.c:
Applied innodb-5.0-149/162 snapshots.
dict_load_columns(): Set the charset-collation code
DATA_MYSQL_BINARY_CHARSET_COLL for those binary string columns
that lack a charset-collation code, i.e., the tables were created
with an older version of MySQL/InnoDB than 4.1.2 (Bug #16298).
innobase/fil/fil0fil.c:
Applied innodb-5.0-149/162 snapshots.
Keep track on unflushed modifications to file spaces. When there
are tens of thousands of file spaces, flushing all files in
fil_flush_file_spaces() would be very slow (Bug #15653).
fil_flush_file_spaces(): Only flush unflushed file spaces.
fil_space_t, fil_system_t: Add a list of unflushed spaces.
innobase/include/univ.i:
Applied innodb-5.0-149/162 snapshots.
Avoid breaking --with-debug builds on QNS and other systems
whose compiler pretends to be GCC 2.
Outside __WIN__ define UNIV_INLINE as static inline.
innobase/os/os0sync.c:
Applied innodb-5.0-149/162 snapshots.
Replace goto in os_event_wait with a normal loop.
innobase/srv/srv0start.c:
Applied innodb-5.0-149/162 snapshots.
Fix bug #16157, a crash when innodb_log_group_home_dir is set
to an empty string. This patch is from Heikki.
mysql-test/r/innodb.result:
Applied innodb-5.0-149/162 snapshots.
Fixed results for added test cases.
mysql-test/t/innodb.test:
Applied innodb-5.0-149/162 snapshots.
Added test cases.
sql/ha_innodb.cc:
Applied innodb-5.0-149/162 snapshots.
Remove some declarations of unused global variables and member
variables of class ha_innobase.
Added diagnostic code trx_print() to
innobase_query_caching_of_table_permitted() to find reason
why we are holding adaptive search latch.
Fixed bug #16229 MySQL/InnoDB uses full explicit table locks
in trigger processing. Take a InnoDB table lock only if user
has explicitly requested a table lock. Added some additional
comments to store_lock() and external_lock(). Fixed some
code style errors.
Remember to use noninlined versions of the functions on
ha_innodb.cc !
sql/ha_innodb.h:
Applied innodb-5.0-149/162 snapshots.
Remove some declarations of unused global variables and member
variables of class ha_innobase.
2006-01-31 21:41:48 +03:00
|
|
|
if (srv_shutdown_state == SRV_SHUTDOWN_EXIT_THREADS) {
|
2001-02-21 01:11:32 +02:00
|
|
|
|
Fixed: BUG#15653, BUG#16157, BUG#16229, BUG#16298, BUG#16387, BUG#16582.
Applied innodb-5.0-ss149/162 snapshots.
innobase/btr/btr0sea.c:
Applied innodb-5.0-149/162 snapshots.
Account for a race condition when dropping the adaptive hash
index for a B-tree page (Bug #16582).
btr_search_drop_page_hash_index(): Retry the operation if a
hash index with different parameters was built meanwhile.
Add diagnostics for the case that hash node pointers to
the page remain. This fix is from Heikki.
btr_search_info-update_hash(), btr_search_info_update_slow():
Document the parameter "info" as in/out.
innobase/dict/dict0dict.c:
Applied innodb-5.0-149/162 snapshots.
Do not mistake TABLENAME_ibfk_0 for auto generated id (Bug #16387).
dict_table_get_highest_foreign_id(): Ignore foreign constraint
identifiers starting with the pattern TABLENAME_ibfk_0.
innobase/dict/dict0load.c:
Applied innodb-5.0-149/162 snapshots.
dict_load_columns(): Set the charset-collation code
DATA_MYSQL_BINARY_CHARSET_COLL for those binary string columns
that lack a charset-collation code, i.e., the tables were created
with an older version of MySQL/InnoDB than 4.1.2 (Bug #16298).
innobase/fil/fil0fil.c:
Applied innodb-5.0-149/162 snapshots.
Keep track on unflushed modifications to file spaces. When there
are tens of thousands of file spaces, flushing all files in
fil_flush_file_spaces() would be very slow (Bug #15653).
fil_flush_file_spaces(): Only flush unflushed file spaces.
fil_space_t, fil_system_t: Add a list of unflushed spaces.
innobase/include/univ.i:
Applied innodb-5.0-149/162 snapshots.
Avoid breaking --with-debug builds on QNS and other systems
whose compiler pretends to be GCC 2.
Outside __WIN__ define UNIV_INLINE as static inline.
innobase/os/os0sync.c:
Applied innodb-5.0-149/162 snapshots.
Replace goto in os_event_wait with a normal loop.
innobase/srv/srv0start.c:
Applied innodb-5.0-149/162 snapshots.
Fix bug #16157, a crash when innodb_log_group_home_dir is set
to an empty string. This patch is from Heikki.
mysql-test/r/innodb.result:
Applied innodb-5.0-149/162 snapshots.
Fixed results for added test cases.
mysql-test/t/innodb.test:
Applied innodb-5.0-149/162 snapshots.
Added test cases.
sql/ha_innodb.cc:
Applied innodb-5.0-149/162 snapshots.
Remove some declarations of unused global variables and member
variables of class ha_innobase.
Added diagnostic code trx_print() to
innobase_query_caching_of_table_permitted() to find reason
why we are holding adaptive search latch.
Fixed bug #16229 MySQL/InnoDB uses full explicit table locks
in trigger processing. Take a InnoDB table lock only if user
has explicitly requested a table lock. Added some additional
comments to store_lock() and external_lock(). Fixed some
code style errors.
Remember to use noninlined versions of the functions on
ha_innodb.cc !
sql/ha_innodb.h:
Applied innodb-5.0-149/162 snapshots.
Remove some declarations of unused global variables and member
variables of class ha_innobase.
2006-01-31 21:41:48 +03:00
|
|
|
os_thread_exit(NULL);
|
|
|
|
}
|
|
|
|
/* Ok, we may return */
|
2001-02-21 01:11:32 +02:00
|
|
|
|
Fixed: BUG#15653, BUG#16157, BUG#16229, BUG#16298, BUG#16387, BUG#16582.
Applied innodb-5.0-ss149/162 snapshots.
innobase/btr/btr0sea.c:
Applied innodb-5.0-149/162 snapshots.
Account for a race condition when dropping the adaptive hash
index for a B-tree page (Bug #16582).
btr_search_drop_page_hash_index(): Retry the operation if a
hash index with different parameters was built meanwhile.
Add diagnostics for the case that hash node pointers to
the page remain. This fix is from Heikki.
btr_search_info-update_hash(), btr_search_info_update_slow():
Document the parameter "info" as in/out.
innobase/dict/dict0dict.c:
Applied innodb-5.0-149/162 snapshots.
Do not mistake TABLENAME_ibfk_0 for auto generated id (Bug #16387).
dict_table_get_highest_foreign_id(): Ignore foreign constraint
identifiers starting with the pattern TABLENAME_ibfk_0.
innobase/dict/dict0load.c:
Applied innodb-5.0-149/162 snapshots.
dict_load_columns(): Set the charset-collation code
DATA_MYSQL_BINARY_CHARSET_COLL for those binary string columns
that lack a charset-collation code, i.e., the tables were created
with an older version of MySQL/InnoDB than 4.1.2 (Bug #16298).
innobase/fil/fil0fil.c:
Applied innodb-5.0-149/162 snapshots.
Keep track on unflushed modifications to file spaces. When there
are tens of thousands of file spaces, flushing all files in
fil_flush_file_spaces() would be very slow (Bug #15653).
fil_flush_file_spaces(): Only flush unflushed file spaces.
fil_space_t, fil_system_t: Add a list of unflushed spaces.
innobase/include/univ.i:
Applied innodb-5.0-149/162 snapshots.
Avoid breaking --with-debug builds on QNS and other systems
whose compiler pretends to be GCC 2.
Outside __WIN__ define UNIV_INLINE as static inline.
innobase/os/os0sync.c:
Applied innodb-5.0-149/162 snapshots.
Replace goto in os_event_wait with a normal loop.
innobase/srv/srv0start.c:
Applied innodb-5.0-149/162 snapshots.
Fix bug #16157, a crash when innodb_log_group_home_dir is set
to an empty string. This patch is from Heikki.
mysql-test/r/innodb.result:
Applied innodb-5.0-149/162 snapshots.
Fixed results for added test cases.
mysql-test/t/innodb.test:
Applied innodb-5.0-149/162 snapshots.
Added test cases.
sql/ha_innodb.cc:
Applied innodb-5.0-149/162 snapshots.
Remove some declarations of unused global variables and member
variables of class ha_innobase.
Added diagnostic code trx_print() to
innobase_query_caching_of_table_permitted() to find reason
why we are holding adaptive search latch.
Fixed bug #16229 MySQL/InnoDB uses full explicit table locks
in trigger processing. Take a InnoDB table lock only if user
has explicitly requested a table lock. Added some additional
comments to store_lock() and external_lock(). Fixed some
code style errors.
Remember to use noninlined versions of the functions on
ha_innodb.cc !
sql/ha_innodb.h:
Applied innodb-5.0-149/162 snapshots.
Remove some declarations of unused global variables and member
variables of class ha_innobase.
2006-01-31 21:41:48 +03:00
|
|
|
return;
|
|
|
|
}
|
2001-02-21 01:11:32 +02:00
|
|
|
|
Fixed: BUG#15653, BUG#16157, BUG#16229, BUG#16298, BUG#16387, BUG#16582.
Applied innodb-5.0-ss149/162 snapshots.
innobase/btr/btr0sea.c:
Applied innodb-5.0-149/162 snapshots.
Account for a race condition when dropping the adaptive hash
index for a B-tree page (Bug #16582).
btr_search_drop_page_hash_index(): Retry the operation if a
hash index with different parameters was built meanwhile.
Add diagnostics for the case that hash node pointers to
the page remain. This fix is from Heikki.
btr_search_info-update_hash(), btr_search_info_update_slow():
Document the parameter "info" as in/out.
innobase/dict/dict0dict.c:
Applied innodb-5.0-149/162 snapshots.
Do not mistake TABLENAME_ibfk_0 for auto generated id (Bug #16387).
dict_table_get_highest_foreign_id(): Ignore foreign constraint
identifiers starting with the pattern TABLENAME_ibfk_0.
innobase/dict/dict0load.c:
Applied innodb-5.0-149/162 snapshots.
dict_load_columns(): Set the charset-collation code
DATA_MYSQL_BINARY_CHARSET_COLL for those binary string columns
that lack a charset-collation code, i.e., the tables were created
with an older version of MySQL/InnoDB than 4.1.2 (Bug #16298).
innobase/fil/fil0fil.c:
Applied innodb-5.0-149/162 snapshots.
Keep track on unflushed modifications to file spaces. When there
are tens of thousands of file spaces, flushing all files in
fil_flush_file_spaces() would be very slow (Bug #15653).
fil_flush_file_spaces(): Only flush unflushed file spaces.
fil_space_t, fil_system_t: Add a list of unflushed spaces.
innobase/include/univ.i:
Applied innodb-5.0-149/162 snapshots.
Avoid breaking --with-debug builds on QNS and other systems
whose compiler pretends to be GCC 2.
Outside __WIN__ define UNIV_INLINE as static inline.
innobase/os/os0sync.c:
Applied innodb-5.0-149/162 snapshots.
Replace goto in os_event_wait with a normal loop.
innobase/srv/srv0start.c:
Applied innodb-5.0-149/162 snapshots.
Fix bug #16157, a crash when innodb_log_group_home_dir is set
to an empty string. This patch is from Heikki.
mysql-test/r/innodb.result:
Applied innodb-5.0-149/162 snapshots.
Fixed results for added test cases.
mysql-test/t/innodb.test:
Applied innodb-5.0-149/162 snapshots.
Added test cases.
sql/ha_innodb.cc:
Applied innodb-5.0-149/162 snapshots.
Remove some declarations of unused global variables and member
variables of class ha_innobase.
Added diagnostic code trx_print() to
innobase_query_caching_of_table_permitted() to find reason
why we are holding adaptive search latch.
Fixed bug #16229 MySQL/InnoDB uses full explicit table locks
in trigger processing. Take a InnoDB table lock only if user
has explicitly requested a table lock. Added some additional
comments to store_lock() and external_lock(). Fixed some
code style errors.
Remember to use noninlined versions of the functions on
ha_innodb.cc !
sql/ha_innodb.h:
Applied innodb-5.0-149/162 snapshots.
Remove some declarations of unused global variables and member
variables of class ha_innobase.
2006-01-31 21:41:48 +03:00
|
|
|
pthread_cond_wait(&(event->cond_var), &(event->os_mutex));
|
2001-02-21 01:11:32 +02:00
|
|
|
|
Fixed: BUG#15653, BUG#16157, BUG#16229, BUG#16298, BUG#16387, BUG#16582.
Applied innodb-5.0-ss149/162 snapshots.
innobase/btr/btr0sea.c:
Applied innodb-5.0-149/162 snapshots.
Account for a race condition when dropping the adaptive hash
index for a B-tree page (Bug #16582).
btr_search_drop_page_hash_index(): Retry the operation if a
hash index with different parameters was built meanwhile.
Add diagnostics for the case that hash node pointers to
the page remain. This fix is from Heikki.
btr_search_info-update_hash(), btr_search_info_update_slow():
Document the parameter "info" as in/out.
innobase/dict/dict0dict.c:
Applied innodb-5.0-149/162 snapshots.
Do not mistake TABLENAME_ibfk_0 for auto generated id (Bug #16387).
dict_table_get_highest_foreign_id(): Ignore foreign constraint
identifiers starting with the pattern TABLENAME_ibfk_0.
innobase/dict/dict0load.c:
Applied innodb-5.0-149/162 snapshots.
dict_load_columns(): Set the charset-collation code
DATA_MYSQL_BINARY_CHARSET_COLL for those binary string columns
that lack a charset-collation code, i.e., the tables were created
with an older version of MySQL/InnoDB than 4.1.2 (Bug #16298).
innobase/fil/fil0fil.c:
Applied innodb-5.0-149/162 snapshots.
Keep track on unflushed modifications to file spaces. When there
are tens of thousands of file spaces, flushing all files in
fil_flush_file_spaces() would be very slow (Bug #15653).
fil_flush_file_spaces(): Only flush unflushed file spaces.
fil_space_t, fil_system_t: Add a list of unflushed spaces.
innobase/include/univ.i:
Applied innodb-5.0-149/162 snapshots.
Avoid breaking --with-debug builds on QNS and other systems
whose compiler pretends to be GCC 2.
Outside __WIN__ define UNIV_INLINE as static inline.
innobase/os/os0sync.c:
Applied innodb-5.0-149/162 snapshots.
Replace goto in os_event_wait with a normal loop.
innobase/srv/srv0start.c:
Applied innodb-5.0-149/162 snapshots.
Fix bug #16157, a crash when innodb_log_group_home_dir is set
to an empty string. This patch is from Heikki.
mysql-test/r/innodb.result:
Applied innodb-5.0-149/162 snapshots.
Fixed results for added test cases.
mysql-test/t/innodb.test:
Applied innodb-5.0-149/162 snapshots.
Added test cases.
sql/ha_innodb.cc:
Applied innodb-5.0-149/162 snapshots.
Remove some declarations of unused global variables and member
variables of class ha_innobase.
Added diagnostic code trx_print() to
innobase_query_caching_of_table_permitted() to find reason
why we are holding adaptive search latch.
Fixed bug #16229 MySQL/InnoDB uses full explicit table locks
in trigger processing. Take a InnoDB table lock only if user
has explicitly requested a table lock. Added some additional
comments to store_lock() and external_lock(). Fixed some
code style errors.
Remember to use noninlined versions of the functions on
ha_innodb.cc !
sql/ha_innodb.h:
Applied innodb-5.0-149/162 snapshots.
Remove some declarations of unused global variables and member
variables of class ha_innobase.
2006-01-31 21:41:48 +03:00
|
|
|
/* Solaris manual said that spurious wakeups may occur: we
|
|
|
|
have to check if the event really has been signaled after
|
|
|
|
we came here to wait */
|
|
|
|
}
|
2001-02-17 14:19:19 +02:00
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
/**************************************************************
|
|
|
|
Waits for an event object until it is in the signaled state or
|
2003-06-02 13:11:20 +03:00
|
|
|
a timeout is exceeded. In Unix the timeout is always infinite. */
|
2001-02-17 14:19:19 +02:00
|
|
|
|
|
|
|
ulint
|
|
|
|
os_event_wait_time(
|
|
|
|
/*===============*/
|
|
|
|
/* out: 0 if success, OS_SYNC_TIME_EXCEEDED if
|
|
|
|
timeout was exceeded */
|
|
|
|
os_event_t event, /* in: event to wait */
|
|
|
|
ulint time) /* in: timeout in microseconds, or
|
|
|
|
OS_SYNC_INFINITE_TIME */
|
|
|
|
{
|
|
|
|
#ifdef __WIN__
|
|
|
|
DWORD err;
|
|
|
|
|
|
|
|
ut_a(event);
|
|
|
|
|
|
|
|
if (time != OS_SYNC_INFINITE_TIME) {
|
2005-03-07 12:03:33 +02:00
|
|
|
err = WaitForSingleObject(event->handle, (DWORD) time / 1000);
|
2001-02-17 14:19:19 +02:00
|
|
|
} else {
|
2003-06-02 13:11:20 +03:00
|
|
|
err = WaitForSingleObject(event->handle, INFINITE);
|
2001-02-17 14:19:19 +02:00
|
|
|
}
|
ut0ut.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0pool.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0file.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0shm.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0thread.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
page0page.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
que0que.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0ins.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0mysql.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0sel.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0upd.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0vers.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0srv.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0start.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0arr.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0rw.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0sync.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
trx0rec.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
trx0trx.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0srv.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0rw.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0sync.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
ut0dbg.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
lock0lock.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
log0log.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
log0recv.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
ibuf0ibuf.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
hash0hash.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mach0data.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0mem.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0pool.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mtr0mtr.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0file.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0thread.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
univ.i Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0mysql.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
com0shm.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
data0data.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
data0type.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
dict0crea.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
dict0dict.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fil0fil.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fsp0fsp.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fut0lst.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0sea.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0flu.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0btr.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0cur.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0btr.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0cur.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0sea.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/buf/buf0buf.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/buf/buf0flu.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/com/com0shm.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/data/data0data.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/data/data0type.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/dict/dict0crea.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/dict/dict0dict.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fil/fil0fil.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fsp/fsp0fsp.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fut/fut0lst.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/ibuf/ibuf0ibuf.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/buf0buf.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/buf0buf.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/hash0hash.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mach0data.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mem0mem.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mem0pool.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mtr0mtr.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0file.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0sync.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0sync.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0thread.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/row0mysql.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/univ.i:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/srv0srv.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/sync0rw.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/sync0sync.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/ut0dbg.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/lock/lock0lock.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/log/log0log.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/log/log0recv.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/mem/mem0pool.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0file.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0shm.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0sync.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0thread.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/page/page0page.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/que/que0que.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0ins.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0mysql.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0sel.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0upd.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0vers.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/srv/srv0srv.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/srv/srv0start.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0arr.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0rw.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0sync.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/trx/trx0rec.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/trx/trx0trx.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/ut/ut0ut.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
2001-03-02 17:33:11 +02:00
|
|
|
|
2001-02-17 14:19:19 +02:00
|
|
|
if (err == WAIT_OBJECT_0) {
|
|
|
|
|
|
|
|
return(0);
|
|
|
|
} else if (err == WAIT_TIMEOUT) {
|
|
|
|
|
|
|
|
return(OS_SYNC_TIME_EXCEEDED);
|
|
|
|
} else {
|
|
|
|
ut_error;
|
2001-04-24 20:55:25 +03:00
|
|
|
return(1000000); /* dummy value to eliminate compiler warn. */
|
2001-02-17 14:19:19 +02:00
|
|
|
}
|
|
|
|
#else
|
|
|
|
UT_NOT_USED(time);
|
ut0ut.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0pool.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0file.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0shm.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0thread.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
page0page.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
que0que.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0ins.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0mysql.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0sel.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0upd.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0vers.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0srv.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0start.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0arr.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0rw.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0sync.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
trx0rec.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
trx0trx.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0srv.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0rw.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0sync.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
ut0dbg.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
lock0lock.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
log0log.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
log0recv.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
ibuf0ibuf.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
hash0hash.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mach0data.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0mem.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0pool.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mtr0mtr.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0file.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0thread.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
univ.i Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0mysql.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
com0shm.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
data0data.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
data0type.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
dict0crea.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
dict0dict.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fil0fil.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fsp0fsp.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fut0lst.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0sea.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0flu.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0btr.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0cur.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0btr.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0cur.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0sea.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/buf/buf0buf.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/buf/buf0flu.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/com/com0shm.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/data/data0data.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/data/data0type.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/dict/dict0crea.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/dict/dict0dict.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fil/fil0fil.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fsp/fsp0fsp.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fut/fut0lst.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/ibuf/ibuf0ibuf.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/buf0buf.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/buf0buf.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/hash0hash.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mach0data.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mem0mem.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mem0pool.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mtr0mtr.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0file.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0sync.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0sync.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0thread.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/row0mysql.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/univ.i:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/srv0srv.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/sync0rw.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/sync0sync.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/ut0dbg.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/lock/lock0lock.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/log/log0log.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/log/log0recv.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/mem/mem0pool.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0file.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0shm.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0sync.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0thread.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/page/page0page.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/que/que0que.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0ins.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0mysql.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0sel.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0upd.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0vers.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/srv/srv0srv.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/srv/srv0start.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0arr.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0rw.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0sync.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/trx/trx0rec.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/trx/trx0trx.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/ut/ut0ut.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
2001-03-02 17:33:11 +02:00
|
|
|
|
2001-02-17 14:19:19 +02:00
|
|
|
/* In Posix this is just an ordinary, infinite wait */
|
|
|
|
|
|
|
|
os_event_wait(event);
|
|
|
|
|
|
|
|
return(0);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
2003-06-02 13:11:20 +03:00
|
|
|
#ifdef __WIN__
|
2001-02-17 14:19:19 +02:00
|
|
|
/**************************************************************
|
2003-06-02 13:11:20 +03:00
|
|
|
Waits for any event in an OS native event array. Returns if even a single
|
2001-02-17 14:19:19 +02:00
|
|
|
one is signaled or becomes signaled. */
|
|
|
|
|
|
|
|
ulint
|
|
|
|
os_event_wait_multiple(
|
|
|
|
/*===================*/
|
|
|
|
/* out: index of the event
|
|
|
|
which was signaled */
|
2003-06-02 13:11:20 +03:00
|
|
|
ulint n, /* in: number of events in the
|
2001-02-17 14:19:19 +02:00
|
|
|
array */
|
2003-06-02 13:11:20 +03:00
|
|
|
os_native_event_t* native_event_array)
|
|
|
|
/* in: pointer to an array of event
|
2001-02-17 14:19:19 +02:00
|
|
|
handles */
|
|
|
|
{
|
|
|
|
DWORD index;
|
|
|
|
|
2003-06-02 13:11:20 +03:00
|
|
|
ut_a(native_event_array);
|
2001-02-17 14:19:19 +02:00
|
|
|
ut_a(n > 0);
|
|
|
|
|
2005-03-07 12:03:33 +02:00
|
|
|
index = WaitForMultipleObjects((DWORD) n, native_event_array,
|
2001-02-17 14:19:19 +02:00
|
|
|
FALSE, /* Wait for any 1 event */
|
|
|
|
INFINITE); /* Infinite wait time
|
|
|
|
limit */
|
2003-12-20 03:41:04 +02:00
|
|
|
ut_a(index >= WAIT_OBJECT_0); /* NOTE: Pointless comparision */
|
2001-02-17 14:19:19 +02:00
|
|
|
ut_a(index < WAIT_OBJECT_0 + n);
|
|
|
|
|
2003-05-30 22:44:37 +03:00
|
|
|
if (srv_shutdown_state == SRV_SHUTDOWN_EXIT_THREADS) {
|
|
|
|
os_thread_exit(NULL);
|
|
|
|
}
|
|
|
|
|
2001-02-17 14:19:19 +02:00
|
|
|
return(index - WAIT_OBJECT_0);
|
|
|
|
}
|
2003-06-02 13:11:20 +03:00
|
|
|
#endif
|
2001-02-17 14:19:19 +02:00
|
|
|
|
|
|
|
/*************************************************************
|
2003-06-02 13:11:20 +03:00
|
|
|
Creates an operating system mutex semaphore. Because these are slow, the
|
|
|
|
mutex semaphore of InnoDB itself (mutex_t) should be used where possible. */
|
2001-02-17 14:19:19 +02:00
|
|
|
|
|
|
|
os_mutex_t
|
|
|
|
os_mutex_create(
|
|
|
|
/*============*/
|
2004-05-17 14:40:31 +03:00
|
|
|
/* out: the mutex handle */
|
|
|
|
const char* name) /* in: the name of the mutex, if NULL
|
|
|
|
the mutex is created without a name */
|
2001-02-17 14:19:19 +02:00
|
|
|
{
|
|
|
|
#ifdef __WIN__
|
|
|
|
HANDLE mutex;
|
|
|
|
os_mutex_t mutex_str;
|
|
|
|
|
|
|
|
mutex = CreateMutex(NULL, /* No security attributes */
|
|
|
|
FALSE, /* Initial state: no owner */
|
2005-06-10 14:18:36 +03:00
|
|
|
(LPCTSTR) name);
|
2001-02-17 14:19:19 +02:00
|
|
|
ut_a(mutex);
|
|
|
|
#else
|
2003-06-02 13:11:20 +03:00
|
|
|
os_fast_mutex_t* mutex;
|
2001-02-17 14:19:19 +02:00
|
|
|
os_mutex_t mutex_str;
|
|
|
|
|
|
|
|
UT_NOT_USED(name);
|
ut0ut.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0pool.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0file.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0shm.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0thread.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
page0page.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
que0que.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0ins.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0mysql.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0sel.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0upd.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0vers.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0srv.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0start.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0arr.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0rw.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0sync.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
trx0rec.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
trx0trx.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0srv.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0rw.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0sync.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
ut0dbg.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
lock0lock.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
log0log.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
log0recv.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
ibuf0ibuf.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
hash0hash.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mach0data.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0mem.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0pool.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mtr0mtr.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0file.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0thread.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
univ.i Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0mysql.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
com0shm.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
data0data.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
data0type.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
dict0crea.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
dict0dict.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fil0fil.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fsp0fsp.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fut0lst.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0sea.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0flu.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0btr.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0cur.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0btr.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0cur.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0sea.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/buf/buf0buf.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/buf/buf0flu.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/com/com0shm.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/data/data0data.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/data/data0type.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/dict/dict0crea.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/dict/dict0dict.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fil/fil0fil.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fsp/fsp0fsp.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fut/fut0lst.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/ibuf/ibuf0ibuf.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/buf0buf.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/buf0buf.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/hash0hash.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mach0data.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mem0mem.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mem0pool.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mtr0mtr.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0file.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0sync.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0sync.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0thread.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/row0mysql.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/univ.i:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/srv0srv.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/sync0rw.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/sync0sync.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/ut0dbg.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/lock/lock0lock.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/log/log0log.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/log/log0recv.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/mem/mem0pool.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0file.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0shm.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0sync.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0thread.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/page/page0page.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/que/que0que.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0ins.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0mysql.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0sel.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0upd.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0vers.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/srv/srv0srv.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/srv/srv0start.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0arr.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0rw.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0sync.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/trx/trx0rec.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/trx/trx0trx.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/ut/ut0ut.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
2001-03-02 17:33:11 +02:00
|
|
|
|
2003-06-02 13:11:20 +03:00
|
|
|
mutex = ut_malloc(sizeof(os_fast_mutex_t));
|
2001-02-17 14:19:19 +02:00
|
|
|
|
2003-06-02 13:11:20 +03:00
|
|
|
os_fast_mutex_init(mutex);
|
|
|
|
#endif
|
2001-02-17 14:19:19 +02:00
|
|
|
mutex_str = ut_malloc(sizeof(os_mutex_str_t));
|
|
|
|
|
2003-06-02 13:11:20 +03:00
|
|
|
mutex_str->handle = mutex;
|
2001-02-17 14:19:19 +02:00
|
|
|
mutex_str->count = 0;
|
This ChangeSet must be null-merged to 5.1. Applied innodb-5.0-ss982, -ss998, -ss1003
Fixes:
- Bug #15815: Very poor performance with multiple queries running concurrently
- Bug #22868: 'Thread thrashing' with > 50 concurrent conns under an upd-intensive workloadw
- Bug #23769: Debug assertion failure with innodb_locks_unsafe_for_binlog
- Bug #24089: Race condition in fil_flush_file_spaces()
innobase/buf/buf0buf.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/buf/buf0flu.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/buf/buf0lru.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/dict/dict0crea.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/fil/fil0fil.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1003:
branches/5.0: Merge r1002 from trunk:
fil_flush_file_spaces(): Copy the system->unflushed_spaces list to an
array while holding the mutex. This removes the crash-triggering
race condition that was introduced when fixing Bug 15653. (Bug #24089)
innobase/include/buf0buf.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/include/buf0buf.ic:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/include/dict0crea.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/include/sync0arr.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0rw.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0rw.ic:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0sync.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/os/os0sync.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/row/row0mysql.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/row/row0sel.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r982:
branches/5.0: row_sel(): Do not try to acquire a LOCK_REC_NOT_GAP lock
on the supremum record. Instead, skip to the next record. (Bug #23769)
This fix was backported from r623 in the 5.1 tree.
innobase/srv/srv0start.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r926:
Refer to bug: 22268. Since no one tries to run 5.0 on Windows 95/ME it was
decided to raise the limit of srv_max_n_threads to 10000 on Windows.
innobase/sync/sync0arr.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/sync/sync0rw.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/sync/sync0sync.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r969:
branches/5.0: Port r968 from trunk:
sync_thread_add_level(): When level == SYNC_TREE_NODE, allow the latching
order to be violated if the thread holds dict_operation_lock, whose level is
SYNC_DICT_OPERATION. This removes the assertion failure of TRUNCATE TABLE
#ifdef UNIV_SYNC_DEBUG.
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
2006-11-09 05:02:37 +01:00
|
|
|
mutex_str->event = os_event_create(NULL);
|
2001-02-17 14:19:19 +02:00
|
|
|
|
2003-05-31 03:12:03 +03:00
|
|
|
if (os_sync_mutex_inited) {
|
2003-06-02 13:11:20 +03:00
|
|
|
/* When creating os_sync_mutex itself we cannot reserve it */
|
2003-05-31 03:12:03 +03:00
|
|
|
os_mutex_enter(os_sync_mutex);
|
|
|
|
}
|
|
|
|
|
|
|
|
UT_LIST_ADD_FIRST(os_mutex_list, os_mutex_list, mutex_str);
|
|
|
|
|
2003-06-02 13:11:20 +03:00
|
|
|
os_mutex_count++;
|
|
|
|
|
2003-05-31 03:12:03 +03:00
|
|
|
if (os_sync_mutex_inited) {
|
|
|
|
os_mutex_exit(os_sync_mutex);
|
|
|
|
}
|
|
|
|
|
2001-02-17 14:19:19 +02:00
|
|
|
return(mutex_str);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**************************************************************
|
|
|
|
Acquires ownership of a mutex semaphore. */
|
|
|
|
|
|
|
|
void
|
|
|
|
os_mutex_enter(
|
|
|
|
/*===========*/
|
|
|
|
os_mutex_t mutex) /* in: mutex to acquire */
|
|
|
|
{
|
|
|
|
#ifdef __WIN__
|
|
|
|
DWORD err;
|
|
|
|
|
|
|
|
ut_a(mutex);
|
|
|
|
|
|
|
|
/* Specify infinite time limit for waiting */
|
|
|
|
err = WaitForSingleObject(mutex->handle, INFINITE);
|
|
|
|
|
|
|
|
ut_a(err == WAIT_OBJECT_0);
|
|
|
|
|
|
|
|
(mutex->count)++;
|
|
|
|
ut_a(mutex->count == 1);
|
|
|
|
#else
|
|
|
|
os_fast_mutex_lock(mutex->handle);
|
|
|
|
|
|
|
|
(mutex->count)++;
|
|
|
|
|
|
|
|
ut_a(mutex->count == 1);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
/**************************************************************
|
|
|
|
Releases ownership of a mutex. */
|
|
|
|
|
|
|
|
void
|
|
|
|
os_mutex_exit(
|
|
|
|
/*==========*/
|
|
|
|
os_mutex_t mutex) /* in: mutex to release */
|
|
|
|
{
|
|
|
|
ut_a(mutex);
|
|
|
|
|
|
|
|
ut_a(mutex->count == 1);
|
|
|
|
|
|
|
|
(mutex->count)--;
|
2003-06-02 13:11:20 +03:00
|
|
|
#ifdef __WIN__
|
2001-02-17 14:19:19 +02:00
|
|
|
ut_a(ReleaseMutex(mutex->handle));
|
|
|
|
#else
|
|
|
|
os_fast_mutex_unlock(mutex->handle);
|
ut0ut.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0pool.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0file.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0shm.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0thread.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
page0page.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
que0que.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0ins.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0mysql.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0sel.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0upd.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0vers.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0srv.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0start.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0arr.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0rw.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0sync.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
trx0rec.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
trx0trx.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0srv.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0rw.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0sync.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
ut0dbg.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
lock0lock.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
log0log.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
log0recv.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
ibuf0ibuf.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
hash0hash.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mach0data.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0mem.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0pool.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mtr0mtr.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0file.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0thread.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
univ.i Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0mysql.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
com0shm.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
data0data.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
data0type.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
dict0crea.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
dict0dict.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fil0fil.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fsp0fsp.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fut0lst.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0sea.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0flu.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0btr.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0cur.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0btr.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0cur.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0sea.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/buf/buf0buf.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/buf/buf0flu.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/com/com0shm.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/data/data0data.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/data/data0type.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/dict/dict0crea.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/dict/dict0dict.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fil/fil0fil.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fsp/fsp0fsp.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fut/fut0lst.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/ibuf/ibuf0ibuf.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/buf0buf.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/buf0buf.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/hash0hash.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mach0data.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mem0mem.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mem0pool.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mtr0mtr.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0file.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0sync.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0sync.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0thread.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/row0mysql.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/univ.i:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/srv0srv.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/sync0rw.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/sync0sync.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/ut0dbg.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/lock/lock0lock.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/log/log0log.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/log/log0recv.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/mem/mem0pool.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0file.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0shm.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0sync.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0thread.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/page/page0page.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/que/que0que.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0ins.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0mysql.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0sel.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0upd.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0vers.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/srv/srv0srv.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/srv/srv0start.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0arr.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0rw.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0sync.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/trx/trx0rec.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/trx/trx0trx.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/ut/ut0ut.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
2001-03-02 17:33:11 +02:00
|
|
|
#endif
|
2001-02-17 14:19:19 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**************************************************************
|
|
|
|
Frees a mutex object. */
|
|
|
|
|
|
|
|
void
|
|
|
|
os_mutex_free(
|
|
|
|
/*==========*/
|
|
|
|
os_mutex_t mutex) /* in: mutex to free */
|
|
|
|
{
|
|
|
|
ut_a(mutex);
|
|
|
|
|
This ChangeSet must be null-merged to 5.1. Applied innodb-5.0-ss982, -ss998, -ss1003
Fixes:
- Bug #15815: Very poor performance with multiple queries running concurrently
- Bug #22868: 'Thread thrashing' with > 50 concurrent conns under an upd-intensive workloadw
- Bug #23769: Debug assertion failure with innodb_locks_unsafe_for_binlog
- Bug #24089: Race condition in fil_flush_file_spaces()
innobase/buf/buf0buf.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/buf/buf0flu.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/buf/buf0lru.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/dict/dict0crea.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/fil/fil0fil.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1003:
branches/5.0: Merge r1002 from trunk:
fil_flush_file_spaces(): Copy the system->unflushed_spaces list to an
array while holding the mutex. This removes the crash-triggering
race condition that was introduced when fixing Bug 15653. (Bug #24089)
innobase/include/buf0buf.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/include/buf0buf.ic:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1000:
branches/5.0: Merge r999 from trunk:
Reduce buffer pool mutex contention under >= 4 big concurrent
CPU-bound SELECT queries. (Bug #22868)
Fix: replace the mutex by one mutex protecting the 'flush list'
(and the free list) and several mutexes protecting portions of the
buffer pool, where we keep several indivudual LRU lists of pages.
This patch is from Sunny Bains and Heikki Tuuri.
innobase/include/dict0crea.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/include/sync0arr.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0rw.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0rw.ic:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/include/sync0sync.h:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/os/os0sync.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/row/row0mysql.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
innobase/row/row0sel.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r982:
branches/5.0: row_sel(): Do not try to acquire a LOCK_REC_NOT_GAP lock
on the supremum record. Instead, skip to the next record. (Bug #23769)
This fix was backported from r623 in the 5.1 tree.
innobase/srv/srv0start.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r926:
Refer to bug: 22268. Since no one tries to run 5.0 on Windows 95/ME it was
decided to raise the limit of srv_max_n_threads to 10000 on Windows.
innobase/sync/sync0arr.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/sync/sync0rw.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
innobase/sync/sync0sync.c:
Applied innodb-5.0-ss982, -ss998, -ss1003
Revision r969:
branches/5.0: Port r968 from trunk:
sync_thread_add_level(): When level == SYNC_TREE_NODE, allow the latching
order to be violated if the thread holds dict_operation_lock, whose level is
SYNC_DICT_OPERATION. This removes the assertion failure of TRUNCATE TABLE
#ifdef UNIV_SYNC_DEBUG.
Revision r974:
branches/5.0: Port r973 from trunk.
Do not break the latching order in TRUNCATE TABLE.
dict_truncate_index_tree(): Replace parameter rec_t* rec with
btr_pcur_t* pcur. Reposition pcur before calling btr_create().
sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
Revision r1001:
branches/5.0: Reduce locking contention:
Bug #15815: 'Thread thrashing' with > 50 concurrent connections under
an update-intensive workload.
Fix: Introduce one event per InnoDB semaphore.
This patch is from Sunny Bains and Heikki Tuuri.
This patch will not be merged to trunk (MySQL/InnoDB 5.1) yet,
because it tries to address the problem in a different way.
2006-11-09 05:02:37 +01:00
|
|
|
if (!os_sync_free_called) {
|
|
|
|
os_event_free_internal(mutex->event);
|
|
|
|
}
|
|
|
|
|
2003-06-02 17:58:18 +03:00
|
|
|
if (os_sync_mutex_inited) {
|
|
|
|
os_mutex_enter(os_sync_mutex);
|
|
|
|
}
|
2003-05-31 03:12:03 +03:00
|
|
|
|
|
|
|
UT_LIST_REMOVE(os_mutex_list, os_mutex_list, mutex);
|
2003-06-02 13:11:20 +03:00
|
|
|
|
|
|
|
os_mutex_count--;
|
2003-05-31 03:12:03 +03:00
|
|
|
|
2003-06-02 17:58:18 +03:00
|
|
|
if (os_sync_mutex_inited) {
|
|
|
|
os_mutex_exit(os_sync_mutex);
|
|
|
|
}
|
2003-05-31 03:12:03 +03:00
|
|
|
|
2003-06-02 13:11:20 +03:00
|
|
|
#ifdef __WIN__
|
2001-02-17 14:19:19 +02:00
|
|
|
ut_a(CloseHandle(mutex->handle));
|
2003-05-31 03:12:03 +03:00
|
|
|
|
2001-02-17 14:19:19 +02:00
|
|
|
ut_free(mutex);
|
|
|
|
#else
|
|
|
|
os_fast_mutex_free(mutex->handle);
|
|
|
|
ut_free(mutex->handle);
|
|
|
|
ut_free(mutex);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
/*************************************************************
|
|
|
|
Initializes an operating system fast mutex semaphore. */
|
|
|
|
|
|
|
|
void
|
|
|
|
os_fast_mutex_init(
|
|
|
|
/*===============*/
|
|
|
|
os_fast_mutex_t* fast_mutex) /* in: fast mutex */
|
|
|
|
{
|
|
|
|
#ifdef __WIN__
|
|
|
|
ut_a(fast_mutex);
|
ut0ut.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0pool.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0file.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0shm.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0thread.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
page0page.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
que0que.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0ins.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0mysql.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0sel.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0upd.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0vers.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0srv.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0start.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0arr.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0rw.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0sync.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
trx0rec.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
trx0trx.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0srv.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0rw.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0sync.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
ut0dbg.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
lock0lock.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
log0log.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
log0recv.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
ibuf0ibuf.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
hash0hash.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mach0data.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0mem.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0pool.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mtr0mtr.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0file.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0thread.h Fixes for 64-bit Linux, bug fixes, compiler warning fixes
univ.i Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0mysql.ic Fixes for 64-bit Linux, bug fixes, compiler warning fixes
com0shm.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
data0data.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
data0type.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
dict0crea.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
dict0dict.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fil0fil.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fsp0fsp.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fut0lst.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0sea.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0flu.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0btr.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0cur.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0btr.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0cur.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/btr/btr0sea.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/buf/buf0buf.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/buf/buf0flu.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/com/com0shm.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/data/data0data.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/data/data0type.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/dict/dict0crea.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/dict/dict0dict.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fil/fil0fil.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fsp/fsp0fsp.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/fut/fut0lst.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/ibuf/ibuf0ibuf.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/buf0buf.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/buf0buf.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/hash0hash.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mach0data.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mem0mem.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mem0pool.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/mtr0mtr.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0file.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0sync.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0sync.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/os0thread.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/row0mysql.ic:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/univ.i:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/srv0srv.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/sync0rw.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/sync0sync.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/include/ut0dbg.h:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/lock/lock0lock.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/log/log0log.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/log/log0recv.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/mem/mem0pool.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0file.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0shm.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0sync.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/os/os0thread.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/page/page0page.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/que/que0que.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0ins.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0mysql.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0sel.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0upd.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/row/row0vers.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/srv/srv0srv.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/srv/srv0start.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0arr.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0rw.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/sync/sync0sync.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/trx/trx0rec.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/trx/trx0trx.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
innobase/ut/ut0ut.c:
Fixes for 64-bit Linux, bug fixes, compiler warning fixes
2001-03-02 17:33:11 +02:00
|
|
|
|
2001-02-17 14:19:19 +02:00
|
|
|
InitializeCriticalSection((LPCRITICAL_SECTION) fast_mutex);
|
Many files:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
sql/ha_innodb.cc:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/dict/dict0crea.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/dict/dict0dict.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/include/log0recv.h:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/include/row0mysql.h:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/include/srv0srv.h:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/include/trx0trx.h:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/log/log0recv.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/os/os0sync.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/os/os0thread.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0ins.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0mysql.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0purge.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0undo.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0upd.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/srv/srv0srv.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/srv/srv0start.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/trx/trx0roll.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/trx/trx0trx.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
2002-11-06 00:41:27 +02:00
|
|
|
#else
|
|
|
|
#if defined(UNIV_HOTBACKUP) && defined(UNIV_HPUX10)
|
2003-05-14 20:17:01 +03:00
|
|
|
ut_a(0 == pthread_mutex_init(fast_mutex, pthread_mutexattr_default));
|
2001-02-17 14:19:19 +02:00
|
|
|
#else
|
2003-05-14 20:17:01 +03:00
|
|
|
ut_a(0 == pthread_mutex_init(fast_mutex, MY_MUTEX_INIT_FAST));
|
2001-02-17 14:19:19 +02:00
|
|
|
#endif
|
Many files:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
sql/ha_innodb.cc:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/dict/dict0crea.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/dict/dict0dict.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/include/log0recv.h:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/include/row0mysql.h:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/include/srv0srv.h:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/include/trx0trx.h:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/log/log0recv.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/os/os0sync.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/os/os0thread.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0ins.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0mysql.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0purge.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0undo.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/row/row0upd.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/srv/srv0srv.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/srv/srv0start.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/trx/trx0roll.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
innobase/trx/trx0trx.c:
Merge InnoDB-4.0.5b: minor improvements to foreign keys, more logical data dictionary lock
2002-11-06 00:41:27 +02:00
|
|
|
#endif
|
2003-06-02 13:11:20 +03:00
|
|
|
if (os_sync_mutex_inited) {
|
|
|
|
/* When creating os_sync_mutex itself (in Unix) we cannot
|
|
|
|
reserve it */
|
|
|
|
|
|
|
|
os_mutex_enter(os_sync_mutex);
|
|
|
|
}
|
|
|
|
|
|
|
|
os_fast_mutex_count++;
|
|
|
|
|
|
|
|
if (os_sync_mutex_inited) {
|
|
|
|
os_mutex_exit(os_sync_mutex);
|
|
|
|
}
|
2001-02-17 14:19:19 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**************************************************************
|
|
|
|
Acquires ownership of a fast mutex. */
|
|
|
|
|
|
|
|
void
|
|
|
|
os_fast_mutex_lock(
|
|
|
|
/*===============*/
|
|
|
|
os_fast_mutex_t* fast_mutex) /* in: mutex to acquire */
|
|
|
|
{
|
|
|
|
#ifdef __WIN__
|
|
|
|
EnterCriticalSection((LPCRITICAL_SECTION) fast_mutex);
|
|
|
|
#else
|
|
|
|
pthread_mutex_lock(fast_mutex);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
2001-11-05 18:50:12 +02:00
|
|
|
/**************************************************************
|
|
|
|
Releases ownership of a fast mutex. */
|
|
|
|
|
|
|
|
void
|
|
|
|
os_fast_mutex_unlock(
|
|
|
|
/*=================*/
|
|
|
|
os_fast_mutex_t* fast_mutex) /* in: mutex to release */
|
|
|
|
{
|
|
|
|
#ifdef __WIN__
|
|
|
|
LeaveCriticalSection(fast_mutex);
|
|
|
|
#else
|
|
|
|
pthread_mutex_unlock(fast_mutex);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
2001-02-17 14:19:19 +02:00
|
|
|
/**************************************************************
|
|
|
|
Frees a mutex object. */
|
|
|
|
|
|
|
|
void
|
|
|
|
os_fast_mutex_free(
|
|
|
|
/*===============*/
|
|
|
|
os_fast_mutex_t* fast_mutex) /* in: mutex to free */
|
|
|
|
{
|
|
|
|
#ifdef __WIN__
|
|
|
|
ut_a(fast_mutex);
|
|
|
|
|
|
|
|
DeleteCriticalSection((LPCRITICAL_SECTION) fast_mutex);
|
|
|
|
#else
|
2005-10-03 00:05:50 +03:00
|
|
|
int ret;
|
|
|
|
|
|
|
|
ret = pthread_mutex_destroy(fast_mutex);
|
|
|
|
|
|
|
|
if (ret != 0) {
|
|
|
|
ut_print_timestamp(stderr);
|
|
|
|
fprintf(stderr,
|
|
|
|
" InnoDB: error: return value %lu when calling\n"
|
|
|
|
"InnoDB: pthread_mutex_destroy().\n", (ulint)ret);
|
|
|
|
fprintf(stderr,
|
|
|
|
"InnoDB: Byte contents of the pthread mutex at %p:\n", fast_mutex);
|
|
|
|
ut_print_buf(stderr, (const byte*)fast_mutex,
|
|
|
|
sizeof(os_fast_mutex_t));
|
|
|
|
fprintf(stderr, "\n");
|
|
|
|
}
|
2001-02-17 14:19:19 +02:00
|
|
|
#endif
|
2003-06-02 17:58:18 +03:00
|
|
|
if (os_sync_mutex_inited) {
|
|
|
|
/* When freeing the last mutexes, we have
|
|
|
|
already freed os_sync_mutex */
|
|
|
|
|
|
|
|
os_mutex_enter(os_sync_mutex);
|
|
|
|
}
|
2003-06-02 13:11:20 +03:00
|
|
|
|
|
|
|
os_fast_mutex_count--;
|
|
|
|
|
2003-06-02 17:58:18 +03:00
|
|
|
if (os_sync_mutex_inited) {
|
|
|
|
os_mutex_exit(os_sync_mutex);
|
|
|
|
}
|
2001-02-17 14:19:19 +02:00
|
|
|
}
|