mariadb/storage/innobase/include/ut0rbt.h

255 lines
8.5 KiB
C
Raw Normal View History

/*****************************************************************************
branches/innodb+ Merge r6915:6992 from branches/innodb+multipbp (i.e.: all the changes made since it's creation) This also reverts r6930 to branches/innodb+ because a different solution for that issue is already present in innodb+multibp which is being merged. After this commit branches/innodb+multibp should be discarded and this branch should become our main development tree. ------------------------------------------------------------------------ r6915 | sbains | 2010-03-31 07:33:43 +0300 (Wed, 31 Mar 2010) | 1 line Changed paths: A /branches/innodb+multibp (from /branches/innodb+:6914) Creating a branch for the multiple buffer pool ------------------------------------------------------------------------ r6916 | sbains | 2010-03-31 08:21:00 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/btr/btr0btr.c M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/btr/btr0sea.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/buf/buf0rea.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/handler/i_s.cc M /branches/innodb+multibp/ibuf/ibuf0ibuf.c M /branches/innodb+multibp/include/buf0buddy.h M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/buf0lru.h M /branches/innodb+multibp/include/buf0rea.h M /branches/innodb+multibp/include/buf0types.h M /branches/innodb+multibp/include/ibuf0ibuf.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/univ.i M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mem/mem0mem.c M /branches/innodb+multibp/page/page0zip.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/trx/trx0trx.c M /branches/innodb+multibp/trx/trx0undo.c branches/innodb+multibp: Unable to crash it with UNIV_DEBUG and UNIV_SYNC_DEBUG with both ibtests and Sysbench. The patch now needs a workout from Michael. ------------------------------------------------------------------------ r6917 | sbains | 2010-03-31 08:56:18 +0300 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix error introduced in r6916. ------------------------------------------------------------------------ r6923 | sbains | 2010-03-31 15:16:04 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/page/page0zip.c branches/innodb+multibp: Fix whitespace issues. Add function buf_pool_from_block(). Add some comments to parameters. ------------------------------------------------------------------------ r6932 | sbains | 2010-04-01 01:12:07 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/univ.i branches/innodb+multibp: Remove bogus assertion. It's possible for the space and offset of a page to be undefined during the lifecycle of a page. Remove the debug #defines from univ.i. ------------------------------------------------------------------------ r6933 | sbains | 2010-04-01 01:22:40 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/srv/srv0start.c branches/innodb+multibp: Fix whitespace issues. ------------------------------------------------------------------------ r6934 | sbains | 2010-04-01 01:53:18 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/ChangeLog M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/include/trx0purge.h M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/mysql-test/innodb_bug38231.test A /branches/innodb+multibp/mysql-test/innodb_bug51920.result (from /branches/innodb+/mysql-test/innodb_bug51920.result:6931) A /branches/innodb+multibp/mysql-test/innodb_bug51920.test (from /branches/innodb+/mysql-test/innodb_bug51920.test:6931) M /branches/innodb+multibp/row/row0sel.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/sync/sync0sync.c M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: Merge revisions r6914:6931 from branches/innodb+ ------------------------------------------------------------------------ r6935 | sbains | 2010-04-01 02:08:32 +0300 (Thu, 01 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/mtr/mtr0mtr.c branches/innodb+multibp: Fix the debug assertions for flush order mutex. These were missed in r6934. ------------------------------------------------------------------------ r6936 | sbains | 2010-04-01 02:46:52 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp: Because now we have multiple instances of a mutex at the same level and these mutexes can be acquired simultaneously we can't simply check for <= level. We need to check for <= level - 1. ------------------------------------------------------------------------ r6937 | sbains | 2010-04-01 04:40:17 +0300 (Thu, 01 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: We need to check if the history list len is > than some threshold not that it is evenly divisible by the some batch size. While running tests on dscczz01 I've observed that the purge thread can't keep up with the generation of the UNDO log records because of the faster code. ------------------------------------------------------------------------ r6938 | irana | 2010-04-01 10:15:00 +0300 (Thu, 01 Apr 2010) | 7 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/log0log.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp The buf_flush_order patch that was ported in from 1.1 won't work with multiple buffer pools. This patch moves the mutex protecting order of insertion in the flush list(s) to log_sys struct so that we can have one global mutex protecting insertions into all flush list(s) ------------------------------------------------------------------------ r6941 | sbains | 2010-04-02 00:51:28 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp: We should get the record heap no to check recursively only if we are checking a record lock. Prior to this fix we were doing it for table locks as well, this is a bug. ------------------------------------------------------------------------ r6942 | csun | 2010-04-02 02:39:10 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/ha/ha0ha.c branches/innodb+multibp: fix compiler errors on Windows. Move ut_ad() to after declarations for C file. ------------------------------------------------------------------------ r6943 | sbains | 2010-04-03 05:14:25 +0300 (Sat, 03 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: Remove the code that created the fake buffer pool. ------------------------------------------------------------------------ r6945 | irana | 2010-04-05 23:35:29 +0300 (Mon, 05 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Revert r6941 as it does not resolve the issue and we have to take back the whole fix for bug#49047 ------------------------------------------------------------------------ r6946 | irana | 2010-04-05 23:50:42 +0300 (Mon, 05 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Merged revisions 6932:6944 from branches/innodb+ This solely includes the reversal of fix for bug#49047 ------------------------------------------------------------------------ r6947 | sbains | 2010-04-06 01:33:46 +0300 (Tue, 06 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0lru.c branches/innodb+multibp: Remove the log sys mutex acquisition when doing buffer pool stat aggregation. A dirty read here should suffice. ------------------------------------------------------------------------ r6951 | irana | 2010-04-06 17:25:29 +0300 (Tue, 06 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+mbp Initialize the buf_page_t::buf_pool pointer when the descriptor is allocated using buf_buddy_alloc(). ------------------------------------------------------------------------ r6954 | jyang | 2010-04-06 21:24:46 +0300 (Tue, 06 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix a possible null pointer of index_mapping in a race condition. ------------------------------------------------------------------------ r6958 | sbains | 2010-04-07 00:27:44 +0300 (Wed, 07 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/include/ut0mem.h M /branches/innodb+multibp/ut/ut0mem.c branches/innodb+multibp: Fix part of Bug#52546. We allow ut_free() to accept a NULL pointer and treat it as a nop. ------------------------------------------------------------------------ r6961 | jyang | 2010-04-07 10:50:03 +0300 (Wed, 07 Apr 2010) | 9 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix for bug #52580: Crash in ha_innobase::open on executing INSERT with concurrent ALTER TABLE. Change in MySQL bug #51557 releases the mutex LOCK_open before ha_innobase::open(), causing racing condition for index translation table creation. Fix it by adding dict_sys mutex for the operation. rb://283, approved by Marko. ------------------------------------------------------------------------ r6963 | irana | 2010-04-07 19:14:10 +0300 (Wed, 07 Apr 2010) | 15 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Force setting of buf_pool->LRU_old_ratio by calling buf_LRU_old_ratio_update() with adjust set to TRUE. This will make sure that we grab the buf_pool mutex and actually adjust the buf_pool->LRU_old pointer instead of just updating the buf_pool->LRU_old_ratio. Note that after this change there is no call to buf_LRU_old_ratio_update() with adjust set to FALSE and therefore this parameter should be removed. I am keeping it for now to first make sure that the fix does work. Approved by: No one. Sunny agreed with my hypothesis of the problem. ------------------------------------------------------------------------ r6964 | irana | 2010-04-07 19:59:59 +0300 (Wed, 07 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Remove a too strong assertion on behalf of Jimmy. ------------------------------------------------------------------------ r6971 | sbains | 2010-04-09 13:23:33 +0300 (Fri, 09 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When getting the oldest (minimum) LSN value from all the flush lists we need to acquire the flush list mutex. We were incorrectly acquiring the buffer pool mutex. This patch should fix a slew of bugs reported by Michael. ------------------------------------------------------------------------ r6972 | sbains | 2010-04-10 00:25:09 +0300 (Sat, 10 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: We should not reset the lsn to 0 when we encounter an empty flush list. Oldest LSN should be 0 only when all flush lists are empty. e.g., without this fix if even one flush list was empty we would end up breaking WAL. ------------------------------------------------------------------------ r6987 | sbains | 2010-04-14 00:14:13 +0300 (Wed, 14 Apr 2010) | 12 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When calculating the oldest_lsn we can have a situation where we've iterated to say buffer pool 3 and another thread adds two new dirty pages, the first to buffer pool 1 and the second to buffer pool 4. Up to say buffer pool 3 the oldest_lsn was 0. Now, we will end up returning the lsn at buffer pool 4 as the oldest LSN. We prevent this by acquiring the flush order mutex. One other future option is to calculate the min_lsn when flushing pages from the list and maintaining a running total using atomics. That way we can get rid of this function altogether. The atomics will only really be required when we do parallel flushing. ------------------------------------------------------------------------ r6992 | sbains | 2010-04-14 02:45:59 +0300 (Wed, 14 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/include/ut0rbt.h M /branches/innodb+multibp/ut/ut0rbt.c branches/innodb+multibp: Fix copyright of the rbt code. ------------------------------------------------------------------------
2010-04-19 17:44:15 +02:00
Copyright (c) 2007, 2015, Oracle and/or its affiliates. All Rights Reserved.
branches/innodb+ Merge r6915:6992 from branches/innodb+multipbp (i.e.: all the changes made since it's creation) This also reverts r6930 to branches/innodb+ because a different solution for that issue is already present in innodb+multibp which is being merged. After this commit branches/innodb+multibp should be discarded and this branch should become our main development tree. ------------------------------------------------------------------------ r6915 | sbains | 2010-03-31 07:33:43 +0300 (Wed, 31 Mar 2010) | 1 line Changed paths: A /branches/innodb+multibp (from /branches/innodb+:6914) Creating a branch for the multiple buffer pool ------------------------------------------------------------------------ r6916 | sbains | 2010-03-31 08:21:00 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/btr/btr0btr.c M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/btr/btr0sea.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/buf/buf0rea.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/handler/i_s.cc M /branches/innodb+multibp/ibuf/ibuf0ibuf.c M /branches/innodb+multibp/include/buf0buddy.h M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/buf0lru.h M /branches/innodb+multibp/include/buf0rea.h M /branches/innodb+multibp/include/buf0types.h M /branches/innodb+multibp/include/ibuf0ibuf.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/univ.i M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mem/mem0mem.c M /branches/innodb+multibp/page/page0zip.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/trx/trx0trx.c M /branches/innodb+multibp/trx/trx0undo.c branches/innodb+multibp: Unable to crash it with UNIV_DEBUG and UNIV_SYNC_DEBUG with both ibtests and Sysbench. The patch now needs a workout from Michael. ------------------------------------------------------------------------ r6917 | sbains | 2010-03-31 08:56:18 +0300 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix error introduced in r6916. ------------------------------------------------------------------------ r6923 | sbains | 2010-03-31 15:16:04 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/page/page0zip.c branches/innodb+multibp: Fix whitespace issues. Add function buf_pool_from_block(). Add some comments to parameters. ------------------------------------------------------------------------ r6932 | sbains | 2010-04-01 01:12:07 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/univ.i branches/innodb+multibp: Remove bogus assertion. It's possible for the space and offset of a page to be undefined during the lifecycle of a page. Remove the debug #defines from univ.i. ------------------------------------------------------------------------ r6933 | sbains | 2010-04-01 01:22:40 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/srv/srv0start.c branches/innodb+multibp: Fix whitespace issues. ------------------------------------------------------------------------ r6934 | sbains | 2010-04-01 01:53:18 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/ChangeLog M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/include/trx0purge.h M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/mysql-test/innodb_bug38231.test A /branches/innodb+multibp/mysql-test/innodb_bug51920.result (from /branches/innodb+/mysql-test/innodb_bug51920.result:6931) A /branches/innodb+multibp/mysql-test/innodb_bug51920.test (from /branches/innodb+/mysql-test/innodb_bug51920.test:6931) M /branches/innodb+multibp/row/row0sel.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/sync/sync0sync.c M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: Merge revisions r6914:6931 from branches/innodb+ ------------------------------------------------------------------------ r6935 | sbains | 2010-04-01 02:08:32 +0300 (Thu, 01 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/mtr/mtr0mtr.c branches/innodb+multibp: Fix the debug assertions for flush order mutex. These were missed in r6934. ------------------------------------------------------------------------ r6936 | sbains | 2010-04-01 02:46:52 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp: Because now we have multiple instances of a mutex at the same level and these mutexes can be acquired simultaneously we can't simply check for <= level. We need to check for <= level - 1. ------------------------------------------------------------------------ r6937 | sbains | 2010-04-01 04:40:17 +0300 (Thu, 01 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: We need to check if the history list len is > than some threshold not that it is evenly divisible by the some batch size. While running tests on dscczz01 I've observed that the purge thread can't keep up with the generation of the UNDO log records because of the faster code. ------------------------------------------------------------------------ r6938 | irana | 2010-04-01 10:15:00 +0300 (Thu, 01 Apr 2010) | 7 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/log0log.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp The buf_flush_order patch that was ported in from 1.1 won't work with multiple buffer pools. This patch moves the mutex protecting order of insertion in the flush list(s) to log_sys struct so that we can have one global mutex protecting insertions into all flush list(s) ------------------------------------------------------------------------ r6941 | sbains | 2010-04-02 00:51:28 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp: We should get the record heap no to check recursively only if we are checking a record lock. Prior to this fix we were doing it for table locks as well, this is a bug. ------------------------------------------------------------------------ r6942 | csun | 2010-04-02 02:39:10 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/ha/ha0ha.c branches/innodb+multibp: fix compiler errors on Windows. Move ut_ad() to after declarations for C file. ------------------------------------------------------------------------ r6943 | sbains | 2010-04-03 05:14:25 +0300 (Sat, 03 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: Remove the code that created the fake buffer pool. ------------------------------------------------------------------------ r6945 | irana | 2010-04-05 23:35:29 +0300 (Mon, 05 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Revert r6941 as it does not resolve the issue and we have to take back the whole fix for bug#49047 ------------------------------------------------------------------------ r6946 | irana | 2010-04-05 23:50:42 +0300 (Mon, 05 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Merged revisions 6932:6944 from branches/innodb+ This solely includes the reversal of fix for bug#49047 ------------------------------------------------------------------------ r6947 | sbains | 2010-04-06 01:33:46 +0300 (Tue, 06 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0lru.c branches/innodb+multibp: Remove the log sys mutex acquisition when doing buffer pool stat aggregation. A dirty read here should suffice. ------------------------------------------------------------------------ r6951 | irana | 2010-04-06 17:25:29 +0300 (Tue, 06 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+mbp Initialize the buf_page_t::buf_pool pointer when the descriptor is allocated using buf_buddy_alloc(). ------------------------------------------------------------------------ r6954 | jyang | 2010-04-06 21:24:46 +0300 (Tue, 06 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix a possible null pointer of index_mapping in a race condition. ------------------------------------------------------------------------ r6958 | sbains | 2010-04-07 00:27:44 +0300 (Wed, 07 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/include/ut0mem.h M /branches/innodb+multibp/ut/ut0mem.c branches/innodb+multibp: Fix part of Bug#52546. We allow ut_free() to accept a NULL pointer and treat it as a nop. ------------------------------------------------------------------------ r6961 | jyang | 2010-04-07 10:50:03 +0300 (Wed, 07 Apr 2010) | 9 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix for bug #52580: Crash in ha_innobase::open on executing INSERT with concurrent ALTER TABLE. Change in MySQL bug #51557 releases the mutex LOCK_open before ha_innobase::open(), causing racing condition for index translation table creation. Fix it by adding dict_sys mutex for the operation. rb://283, approved by Marko. ------------------------------------------------------------------------ r6963 | irana | 2010-04-07 19:14:10 +0300 (Wed, 07 Apr 2010) | 15 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Force setting of buf_pool->LRU_old_ratio by calling buf_LRU_old_ratio_update() with adjust set to TRUE. This will make sure that we grab the buf_pool mutex and actually adjust the buf_pool->LRU_old pointer instead of just updating the buf_pool->LRU_old_ratio. Note that after this change there is no call to buf_LRU_old_ratio_update() with adjust set to FALSE and therefore this parameter should be removed. I am keeping it for now to first make sure that the fix does work. Approved by: No one. Sunny agreed with my hypothesis of the problem. ------------------------------------------------------------------------ r6964 | irana | 2010-04-07 19:59:59 +0300 (Wed, 07 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Remove a too strong assertion on behalf of Jimmy. ------------------------------------------------------------------------ r6971 | sbains | 2010-04-09 13:23:33 +0300 (Fri, 09 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When getting the oldest (minimum) LSN value from all the flush lists we need to acquire the flush list mutex. We were incorrectly acquiring the buffer pool mutex. This patch should fix a slew of bugs reported by Michael. ------------------------------------------------------------------------ r6972 | sbains | 2010-04-10 00:25:09 +0300 (Sat, 10 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: We should not reset the lsn to 0 when we encounter an empty flush list. Oldest LSN should be 0 only when all flush lists are empty. e.g., without this fix if even one flush list was empty we would end up breaking WAL. ------------------------------------------------------------------------ r6987 | sbains | 2010-04-14 00:14:13 +0300 (Wed, 14 Apr 2010) | 12 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When calculating the oldest_lsn we can have a situation where we've iterated to say buffer pool 3 and another thread adds two new dirty pages, the first to buffer pool 1 and the second to buffer pool 4. Up to say buffer pool 3 the oldest_lsn was 0. Now, we will end up returning the lsn at buffer pool 4 as the oldest LSN. We prevent this by acquiring the flush order mutex. One other future option is to calculate the min_lsn when flushing pages from the list and maintaining a running total using atomics. That way we can get rid of this function altogether. The atomics will only really be required when we do parallel flushing. ------------------------------------------------------------------------ r6992 | sbains | 2010-04-14 02:45:59 +0300 (Wed, 14 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/include/ut0rbt.h M /branches/innodb+multibp/ut/ut0rbt.c branches/innodb+multibp: Fix copyright of the rbt code. ------------------------------------------------------------------------
2010-04-19 17:44:15 +02:00
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
branches/innodb+ Merge r6915:6992 from branches/innodb+multipbp (i.e.: all the changes made since it's creation) This also reverts r6930 to branches/innodb+ because a different solution for that issue is already present in innodb+multibp which is being merged. After this commit branches/innodb+multibp should be discarded and this branch should become our main development tree. ------------------------------------------------------------------------ r6915 | sbains | 2010-03-31 07:33:43 +0300 (Wed, 31 Mar 2010) | 1 line Changed paths: A /branches/innodb+multibp (from /branches/innodb+:6914) Creating a branch for the multiple buffer pool ------------------------------------------------------------------------ r6916 | sbains | 2010-03-31 08:21:00 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/btr/btr0btr.c M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/btr/btr0sea.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/buf/buf0rea.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/handler/i_s.cc M /branches/innodb+multibp/ibuf/ibuf0ibuf.c M /branches/innodb+multibp/include/buf0buddy.h M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/buf0lru.h M /branches/innodb+multibp/include/buf0rea.h M /branches/innodb+multibp/include/buf0types.h M /branches/innodb+multibp/include/ibuf0ibuf.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/univ.i M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mem/mem0mem.c M /branches/innodb+multibp/page/page0zip.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/trx/trx0trx.c M /branches/innodb+multibp/trx/trx0undo.c branches/innodb+multibp: Unable to crash it with UNIV_DEBUG and UNIV_SYNC_DEBUG with both ibtests and Sysbench. The patch now needs a workout from Michael. ------------------------------------------------------------------------ r6917 | sbains | 2010-03-31 08:56:18 +0300 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix error introduced in r6916. ------------------------------------------------------------------------ r6923 | sbains | 2010-03-31 15:16:04 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/page/page0zip.c branches/innodb+multibp: Fix whitespace issues. Add function buf_pool_from_block(). Add some comments to parameters. ------------------------------------------------------------------------ r6932 | sbains | 2010-04-01 01:12:07 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/univ.i branches/innodb+multibp: Remove bogus assertion. It's possible for the space and offset of a page to be undefined during the lifecycle of a page. Remove the debug #defines from univ.i. ------------------------------------------------------------------------ r6933 | sbains | 2010-04-01 01:22:40 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/srv/srv0start.c branches/innodb+multibp: Fix whitespace issues. ------------------------------------------------------------------------ r6934 | sbains | 2010-04-01 01:53:18 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/ChangeLog M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/include/trx0purge.h M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/mysql-test/innodb_bug38231.test A /branches/innodb+multibp/mysql-test/innodb_bug51920.result (from /branches/innodb+/mysql-test/innodb_bug51920.result:6931) A /branches/innodb+multibp/mysql-test/innodb_bug51920.test (from /branches/innodb+/mysql-test/innodb_bug51920.test:6931) M /branches/innodb+multibp/row/row0sel.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/sync/sync0sync.c M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: Merge revisions r6914:6931 from branches/innodb+ ------------------------------------------------------------------------ r6935 | sbains | 2010-04-01 02:08:32 +0300 (Thu, 01 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/mtr/mtr0mtr.c branches/innodb+multibp: Fix the debug assertions for flush order mutex. These were missed in r6934. ------------------------------------------------------------------------ r6936 | sbains | 2010-04-01 02:46:52 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp: Because now we have multiple instances of a mutex at the same level and these mutexes can be acquired simultaneously we can't simply check for <= level. We need to check for <= level - 1. ------------------------------------------------------------------------ r6937 | sbains | 2010-04-01 04:40:17 +0300 (Thu, 01 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: We need to check if the history list len is > than some threshold not that it is evenly divisible by the some batch size. While running tests on dscczz01 I've observed that the purge thread can't keep up with the generation of the UNDO log records because of the faster code. ------------------------------------------------------------------------ r6938 | irana | 2010-04-01 10:15:00 +0300 (Thu, 01 Apr 2010) | 7 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/log0log.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp The buf_flush_order patch that was ported in from 1.1 won't work with multiple buffer pools. This patch moves the mutex protecting order of insertion in the flush list(s) to log_sys struct so that we can have one global mutex protecting insertions into all flush list(s) ------------------------------------------------------------------------ r6941 | sbains | 2010-04-02 00:51:28 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp: We should get the record heap no to check recursively only if we are checking a record lock. Prior to this fix we were doing it for table locks as well, this is a bug. ------------------------------------------------------------------------ r6942 | csun | 2010-04-02 02:39:10 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/ha/ha0ha.c branches/innodb+multibp: fix compiler errors on Windows. Move ut_ad() to after declarations for C file. ------------------------------------------------------------------------ r6943 | sbains | 2010-04-03 05:14:25 +0300 (Sat, 03 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: Remove the code that created the fake buffer pool. ------------------------------------------------------------------------ r6945 | irana | 2010-04-05 23:35:29 +0300 (Mon, 05 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Revert r6941 as it does not resolve the issue and we have to take back the whole fix for bug#49047 ------------------------------------------------------------------------ r6946 | irana | 2010-04-05 23:50:42 +0300 (Mon, 05 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Merged revisions 6932:6944 from branches/innodb+ This solely includes the reversal of fix for bug#49047 ------------------------------------------------------------------------ r6947 | sbains | 2010-04-06 01:33:46 +0300 (Tue, 06 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0lru.c branches/innodb+multibp: Remove the log sys mutex acquisition when doing buffer pool stat aggregation. A dirty read here should suffice. ------------------------------------------------------------------------ r6951 | irana | 2010-04-06 17:25:29 +0300 (Tue, 06 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+mbp Initialize the buf_page_t::buf_pool pointer when the descriptor is allocated using buf_buddy_alloc(). ------------------------------------------------------------------------ r6954 | jyang | 2010-04-06 21:24:46 +0300 (Tue, 06 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix a possible null pointer of index_mapping in a race condition. ------------------------------------------------------------------------ r6958 | sbains | 2010-04-07 00:27:44 +0300 (Wed, 07 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/include/ut0mem.h M /branches/innodb+multibp/ut/ut0mem.c branches/innodb+multibp: Fix part of Bug#52546. We allow ut_free() to accept a NULL pointer and treat it as a nop. ------------------------------------------------------------------------ r6961 | jyang | 2010-04-07 10:50:03 +0300 (Wed, 07 Apr 2010) | 9 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix for bug #52580: Crash in ha_innobase::open on executing INSERT with concurrent ALTER TABLE. Change in MySQL bug #51557 releases the mutex LOCK_open before ha_innobase::open(), causing racing condition for index translation table creation. Fix it by adding dict_sys mutex for the operation. rb://283, approved by Marko. ------------------------------------------------------------------------ r6963 | irana | 2010-04-07 19:14:10 +0300 (Wed, 07 Apr 2010) | 15 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Force setting of buf_pool->LRU_old_ratio by calling buf_LRU_old_ratio_update() with adjust set to TRUE. This will make sure that we grab the buf_pool mutex and actually adjust the buf_pool->LRU_old pointer instead of just updating the buf_pool->LRU_old_ratio. Note that after this change there is no call to buf_LRU_old_ratio_update() with adjust set to FALSE and therefore this parameter should be removed. I am keeping it for now to first make sure that the fix does work. Approved by: No one. Sunny agreed with my hypothesis of the problem. ------------------------------------------------------------------------ r6964 | irana | 2010-04-07 19:59:59 +0300 (Wed, 07 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Remove a too strong assertion on behalf of Jimmy. ------------------------------------------------------------------------ r6971 | sbains | 2010-04-09 13:23:33 +0300 (Fri, 09 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When getting the oldest (minimum) LSN value from all the flush lists we need to acquire the flush list mutex. We were incorrectly acquiring the buffer pool mutex. This patch should fix a slew of bugs reported by Michael. ------------------------------------------------------------------------ r6972 | sbains | 2010-04-10 00:25:09 +0300 (Sat, 10 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: We should not reset the lsn to 0 when we encounter an empty flush list. Oldest LSN should be 0 only when all flush lists are empty. e.g., without this fix if even one flush list was empty we would end up breaking WAL. ------------------------------------------------------------------------ r6987 | sbains | 2010-04-14 00:14:13 +0300 (Wed, 14 Apr 2010) | 12 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When calculating the oldest_lsn we can have a situation where we've iterated to say buffer pool 3 and another thread adds two new dirty pages, the first to buffer pool 1 and the second to buffer pool 4. Up to say buffer pool 3 the oldest_lsn was 0. Now, we will end up returning the lsn at buffer pool 4 as the oldest LSN. We prevent this by acquiring the flush order mutex. One other future option is to calculate the min_lsn when flushing pages from the list and maintaining a running total using atomics. That way we can get rid of this function altogether. The atomics will only really be required when we do parallel flushing. ------------------------------------------------------------------------ r6992 | sbains | 2010-04-14 02:45:59 +0300 (Wed, 14 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/include/ut0rbt.h M /branches/innodb+multibp/ut/ut0rbt.c branches/innodb+multibp: Fix copyright of the rbt code. ------------------------------------------------------------------------
2010-04-19 17:44:15 +02:00
*****************************************************************************/
/******************************************************************//**
@file include/ut0rbt.h
Various utilities
Created 2007-03-20 Sunny Bains
*******************************************************/
#ifndef INNOBASE_UT0RBT_H
#define INNOBASE_UT0RBT_H
#if !defined(IB_RBT_TESTING)
#include "ut0mem.h"
#else
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#define ut_malloc malloc
#define ut_free free
#define ulint unsigned long
#define ut_a(c) assert(c)
#define ut_error assert(0)
#define ibool unsigned int
#define TRUE 1
#define FALSE 0
#endif
2013-03-25 23:03:13 +01:00
struct ib_rbt_node_t;
typedef void (*ib_rbt_print_node)(const ib_rbt_node_t* node);
typedef int (*ib_rbt_compare)(const void* p1, const void* p2);
typedef int (*ib_rbt_arg_compare)(const void*, const void* p1, const void* p2);
branches/innodb+ Merge r6915:6992 from branches/innodb+multipbp (i.e.: all the changes made since it's creation) This also reverts r6930 to branches/innodb+ because a different solution for that issue is already present in innodb+multibp which is being merged. After this commit branches/innodb+multibp should be discarded and this branch should become our main development tree. ------------------------------------------------------------------------ r6915 | sbains | 2010-03-31 07:33:43 +0300 (Wed, 31 Mar 2010) | 1 line Changed paths: A /branches/innodb+multibp (from /branches/innodb+:6914) Creating a branch for the multiple buffer pool ------------------------------------------------------------------------ r6916 | sbains | 2010-03-31 08:21:00 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/btr/btr0btr.c M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/btr/btr0sea.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/buf/buf0rea.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/handler/i_s.cc M /branches/innodb+multibp/ibuf/ibuf0ibuf.c M /branches/innodb+multibp/include/buf0buddy.h M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/buf0lru.h M /branches/innodb+multibp/include/buf0rea.h M /branches/innodb+multibp/include/buf0types.h M /branches/innodb+multibp/include/ibuf0ibuf.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/univ.i M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mem/mem0mem.c M /branches/innodb+multibp/page/page0zip.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/trx/trx0trx.c M /branches/innodb+multibp/trx/trx0undo.c branches/innodb+multibp: Unable to crash it with UNIV_DEBUG and UNIV_SYNC_DEBUG with both ibtests and Sysbench. The patch now needs a workout from Michael. ------------------------------------------------------------------------ r6917 | sbains | 2010-03-31 08:56:18 +0300 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix error introduced in r6916. ------------------------------------------------------------------------ r6923 | sbains | 2010-03-31 15:16:04 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/page/page0zip.c branches/innodb+multibp: Fix whitespace issues. Add function buf_pool_from_block(). Add some comments to parameters. ------------------------------------------------------------------------ r6932 | sbains | 2010-04-01 01:12:07 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/univ.i branches/innodb+multibp: Remove bogus assertion. It's possible for the space and offset of a page to be undefined during the lifecycle of a page. Remove the debug #defines from univ.i. ------------------------------------------------------------------------ r6933 | sbains | 2010-04-01 01:22:40 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/srv/srv0start.c branches/innodb+multibp: Fix whitespace issues. ------------------------------------------------------------------------ r6934 | sbains | 2010-04-01 01:53:18 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/ChangeLog M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/include/trx0purge.h M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/mysql-test/innodb_bug38231.test A /branches/innodb+multibp/mysql-test/innodb_bug51920.result (from /branches/innodb+/mysql-test/innodb_bug51920.result:6931) A /branches/innodb+multibp/mysql-test/innodb_bug51920.test (from /branches/innodb+/mysql-test/innodb_bug51920.test:6931) M /branches/innodb+multibp/row/row0sel.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/sync/sync0sync.c M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: Merge revisions r6914:6931 from branches/innodb+ ------------------------------------------------------------------------ r6935 | sbains | 2010-04-01 02:08:32 +0300 (Thu, 01 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/mtr/mtr0mtr.c branches/innodb+multibp: Fix the debug assertions for flush order mutex. These were missed in r6934. ------------------------------------------------------------------------ r6936 | sbains | 2010-04-01 02:46:52 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp: Because now we have multiple instances of a mutex at the same level and these mutexes can be acquired simultaneously we can't simply check for <= level. We need to check for <= level - 1. ------------------------------------------------------------------------ r6937 | sbains | 2010-04-01 04:40:17 +0300 (Thu, 01 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: We need to check if the history list len is > than some threshold not that it is evenly divisible by the some batch size. While running tests on dscczz01 I've observed that the purge thread can't keep up with the generation of the UNDO log records because of the faster code. ------------------------------------------------------------------------ r6938 | irana | 2010-04-01 10:15:00 +0300 (Thu, 01 Apr 2010) | 7 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/log0log.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp The buf_flush_order patch that was ported in from 1.1 won't work with multiple buffer pools. This patch moves the mutex protecting order of insertion in the flush list(s) to log_sys struct so that we can have one global mutex protecting insertions into all flush list(s) ------------------------------------------------------------------------ r6941 | sbains | 2010-04-02 00:51:28 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp: We should get the record heap no to check recursively only if we are checking a record lock. Prior to this fix we were doing it for table locks as well, this is a bug. ------------------------------------------------------------------------ r6942 | csun | 2010-04-02 02:39:10 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/ha/ha0ha.c branches/innodb+multibp: fix compiler errors on Windows. Move ut_ad() to after declarations for C file. ------------------------------------------------------------------------ r6943 | sbains | 2010-04-03 05:14:25 +0300 (Sat, 03 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: Remove the code that created the fake buffer pool. ------------------------------------------------------------------------ r6945 | irana | 2010-04-05 23:35:29 +0300 (Mon, 05 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Revert r6941 as it does not resolve the issue and we have to take back the whole fix for bug#49047 ------------------------------------------------------------------------ r6946 | irana | 2010-04-05 23:50:42 +0300 (Mon, 05 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Merged revisions 6932:6944 from branches/innodb+ This solely includes the reversal of fix for bug#49047 ------------------------------------------------------------------------ r6947 | sbains | 2010-04-06 01:33:46 +0300 (Tue, 06 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0lru.c branches/innodb+multibp: Remove the log sys mutex acquisition when doing buffer pool stat aggregation. A dirty read here should suffice. ------------------------------------------------------------------------ r6951 | irana | 2010-04-06 17:25:29 +0300 (Tue, 06 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+mbp Initialize the buf_page_t::buf_pool pointer when the descriptor is allocated using buf_buddy_alloc(). ------------------------------------------------------------------------ r6954 | jyang | 2010-04-06 21:24:46 +0300 (Tue, 06 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix a possible null pointer of index_mapping in a race condition. ------------------------------------------------------------------------ r6958 | sbains | 2010-04-07 00:27:44 +0300 (Wed, 07 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/include/ut0mem.h M /branches/innodb+multibp/ut/ut0mem.c branches/innodb+multibp: Fix part of Bug#52546. We allow ut_free() to accept a NULL pointer and treat it as a nop. ------------------------------------------------------------------------ r6961 | jyang | 2010-04-07 10:50:03 +0300 (Wed, 07 Apr 2010) | 9 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix for bug #52580: Crash in ha_innobase::open on executing INSERT with concurrent ALTER TABLE. Change in MySQL bug #51557 releases the mutex LOCK_open before ha_innobase::open(), causing racing condition for index translation table creation. Fix it by adding dict_sys mutex for the operation. rb://283, approved by Marko. ------------------------------------------------------------------------ r6963 | irana | 2010-04-07 19:14:10 +0300 (Wed, 07 Apr 2010) | 15 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Force setting of buf_pool->LRU_old_ratio by calling buf_LRU_old_ratio_update() with adjust set to TRUE. This will make sure that we grab the buf_pool mutex and actually adjust the buf_pool->LRU_old pointer instead of just updating the buf_pool->LRU_old_ratio. Note that after this change there is no call to buf_LRU_old_ratio_update() with adjust set to FALSE and therefore this parameter should be removed. I am keeping it for now to first make sure that the fix does work. Approved by: No one. Sunny agreed with my hypothesis of the problem. ------------------------------------------------------------------------ r6964 | irana | 2010-04-07 19:59:59 +0300 (Wed, 07 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Remove a too strong assertion on behalf of Jimmy. ------------------------------------------------------------------------ r6971 | sbains | 2010-04-09 13:23:33 +0300 (Fri, 09 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When getting the oldest (minimum) LSN value from all the flush lists we need to acquire the flush list mutex. We were incorrectly acquiring the buffer pool mutex. This patch should fix a slew of bugs reported by Michael. ------------------------------------------------------------------------ r6972 | sbains | 2010-04-10 00:25:09 +0300 (Sat, 10 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: We should not reset the lsn to 0 when we encounter an empty flush list. Oldest LSN should be 0 only when all flush lists are empty. e.g., without this fix if even one flush list was empty we would end up breaking WAL. ------------------------------------------------------------------------ r6987 | sbains | 2010-04-14 00:14:13 +0300 (Wed, 14 Apr 2010) | 12 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When calculating the oldest_lsn we can have a situation where we've iterated to say buffer pool 3 and another thread adds two new dirty pages, the first to buffer pool 1 and the second to buffer pool 4. Up to say buffer pool 3 the oldest_lsn was 0. Now, we will end up returning the lsn at buffer pool 4 as the oldest LSN. We prevent this by acquiring the flush order mutex. One other future option is to calculate the min_lsn when flushing pages from the list and maintaining a running total using atomics. That way we can get rid of this function altogether. The atomics will only really be required when we do parallel flushing. ------------------------------------------------------------------------ r6992 | sbains | 2010-04-14 02:45:59 +0300 (Wed, 14 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/include/ut0rbt.h M /branches/innodb+multibp/ut/ut0rbt.c branches/innodb+multibp: Fix copyright of the rbt code. ------------------------------------------------------------------------
2010-04-19 17:44:15 +02:00
/** Red black tree color types */
2013-03-25 23:03:13 +01:00
enum ib_rbt_color_t {
IB_RBT_RED,
IB_RBT_BLACK
};
branches/innodb+ Merge r6915:6992 from branches/innodb+multipbp (i.e.: all the changes made since it's creation) This also reverts r6930 to branches/innodb+ because a different solution for that issue is already present in innodb+multibp which is being merged. After this commit branches/innodb+multibp should be discarded and this branch should become our main development tree. ------------------------------------------------------------------------ r6915 | sbains | 2010-03-31 07:33:43 +0300 (Wed, 31 Mar 2010) | 1 line Changed paths: A /branches/innodb+multibp (from /branches/innodb+:6914) Creating a branch for the multiple buffer pool ------------------------------------------------------------------------ r6916 | sbains | 2010-03-31 08:21:00 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/btr/btr0btr.c M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/btr/btr0sea.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/buf/buf0rea.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/handler/i_s.cc M /branches/innodb+multibp/ibuf/ibuf0ibuf.c M /branches/innodb+multibp/include/buf0buddy.h M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/buf0lru.h M /branches/innodb+multibp/include/buf0rea.h M /branches/innodb+multibp/include/buf0types.h M /branches/innodb+multibp/include/ibuf0ibuf.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/univ.i M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mem/mem0mem.c M /branches/innodb+multibp/page/page0zip.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/trx/trx0trx.c M /branches/innodb+multibp/trx/trx0undo.c branches/innodb+multibp: Unable to crash it with UNIV_DEBUG and UNIV_SYNC_DEBUG with both ibtests and Sysbench. The patch now needs a workout from Michael. ------------------------------------------------------------------------ r6917 | sbains | 2010-03-31 08:56:18 +0300 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix error introduced in r6916. ------------------------------------------------------------------------ r6923 | sbains | 2010-03-31 15:16:04 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/page/page0zip.c branches/innodb+multibp: Fix whitespace issues. Add function buf_pool_from_block(). Add some comments to parameters. ------------------------------------------------------------------------ r6932 | sbains | 2010-04-01 01:12:07 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/univ.i branches/innodb+multibp: Remove bogus assertion. It's possible for the space and offset of a page to be undefined during the lifecycle of a page. Remove the debug #defines from univ.i. ------------------------------------------------------------------------ r6933 | sbains | 2010-04-01 01:22:40 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/srv/srv0start.c branches/innodb+multibp: Fix whitespace issues. ------------------------------------------------------------------------ r6934 | sbains | 2010-04-01 01:53:18 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/ChangeLog M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/include/trx0purge.h M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/mysql-test/innodb_bug38231.test A /branches/innodb+multibp/mysql-test/innodb_bug51920.result (from /branches/innodb+/mysql-test/innodb_bug51920.result:6931) A /branches/innodb+multibp/mysql-test/innodb_bug51920.test (from /branches/innodb+/mysql-test/innodb_bug51920.test:6931) M /branches/innodb+multibp/row/row0sel.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/sync/sync0sync.c M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: Merge revisions r6914:6931 from branches/innodb+ ------------------------------------------------------------------------ r6935 | sbains | 2010-04-01 02:08:32 +0300 (Thu, 01 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/mtr/mtr0mtr.c branches/innodb+multibp: Fix the debug assertions for flush order mutex. These were missed in r6934. ------------------------------------------------------------------------ r6936 | sbains | 2010-04-01 02:46:52 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp: Because now we have multiple instances of a mutex at the same level and these mutexes can be acquired simultaneously we can't simply check for <= level. We need to check for <= level - 1. ------------------------------------------------------------------------ r6937 | sbains | 2010-04-01 04:40:17 +0300 (Thu, 01 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: We need to check if the history list len is > than some threshold not that it is evenly divisible by the some batch size. While running tests on dscczz01 I've observed that the purge thread can't keep up with the generation of the UNDO log records because of the faster code. ------------------------------------------------------------------------ r6938 | irana | 2010-04-01 10:15:00 +0300 (Thu, 01 Apr 2010) | 7 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/log0log.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp The buf_flush_order patch that was ported in from 1.1 won't work with multiple buffer pools. This patch moves the mutex protecting order of insertion in the flush list(s) to log_sys struct so that we can have one global mutex protecting insertions into all flush list(s) ------------------------------------------------------------------------ r6941 | sbains | 2010-04-02 00:51:28 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp: We should get the record heap no to check recursively only if we are checking a record lock. Prior to this fix we were doing it for table locks as well, this is a bug. ------------------------------------------------------------------------ r6942 | csun | 2010-04-02 02:39:10 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/ha/ha0ha.c branches/innodb+multibp: fix compiler errors on Windows. Move ut_ad() to after declarations for C file. ------------------------------------------------------------------------ r6943 | sbains | 2010-04-03 05:14:25 +0300 (Sat, 03 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: Remove the code that created the fake buffer pool. ------------------------------------------------------------------------ r6945 | irana | 2010-04-05 23:35:29 +0300 (Mon, 05 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Revert r6941 as it does not resolve the issue and we have to take back the whole fix for bug#49047 ------------------------------------------------------------------------ r6946 | irana | 2010-04-05 23:50:42 +0300 (Mon, 05 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Merged revisions 6932:6944 from branches/innodb+ This solely includes the reversal of fix for bug#49047 ------------------------------------------------------------------------ r6947 | sbains | 2010-04-06 01:33:46 +0300 (Tue, 06 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0lru.c branches/innodb+multibp: Remove the log sys mutex acquisition when doing buffer pool stat aggregation. A dirty read here should suffice. ------------------------------------------------------------------------ r6951 | irana | 2010-04-06 17:25:29 +0300 (Tue, 06 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+mbp Initialize the buf_page_t::buf_pool pointer when the descriptor is allocated using buf_buddy_alloc(). ------------------------------------------------------------------------ r6954 | jyang | 2010-04-06 21:24:46 +0300 (Tue, 06 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix a possible null pointer of index_mapping in a race condition. ------------------------------------------------------------------------ r6958 | sbains | 2010-04-07 00:27:44 +0300 (Wed, 07 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/include/ut0mem.h M /branches/innodb+multibp/ut/ut0mem.c branches/innodb+multibp: Fix part of Bug#52546. We allow ut_free() to accept a NULL pointer and treat it as a nop. ------------------------------------------------------------------------ r6961 | jyang | 2010-04-07 10:50:03 +0300 (Wed, 07 Apr 2010) | 9 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix for bug #52580: Crash in ha_innobase::open on executing INSERT with concurrent ALTER TABLE. Change in MySQL bug #51557 releases the mutex LOCK_open before ha_innobase::open(), causing racing condition for index translation table creation. Fix it by adding dict_sys mutex for the operation. rb://283, approved by Marko. ------------------------------------------------------------------------ r6963 | irana | 2010-04-07 19:14:10 +0300 (Wed, 07 Apr 2010) | 15 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Force setting of buf_pool->LRU_old_ratio by calling buf_LRU_old_ratio_update() with adjust set to TRUE. This will make sure that we grab the buf_pool mutex and actually adjust the buf_pool->LRU_old pointer instead of just updating the buf_pool->LRU_old_ratio. Note that after this change there is no call to buf_LRU_old_ratio_update() with adjust set to FALSE and therefore this parameter should be removed. I am keeping it for now to first make sure that the fix does work. Approved by: No one. Sunny agreed with my hypothesis of the problem. ------------------------------------------------------------------------ r6964 | irana | 2010-04-07 19:59:59 +0300 (Wed, 07 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Remove a too strong assertion on behalf of Jimmy. ------------------------------------------------------------------------ r6971 | sbains | 2010-04-09 13:23:33 +0300 (Fri, 09 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When getting the oldest (minimum) LSN value from all the flush lists we need to acquire the flush list mutex. We were incorrectly acquiring the buffer pool mutex. This patch should fix a slew of bugs reported by Michael. ------------------------------------------------------------------------ r6972 | sbains | 2010-04-10 00:25:09 +0300 (Sat, 10 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: We should not reset the lsn to 0 when we encounter an empty flush list. Oldest LSN should be 0 only when all flush lists are empty. e.g., without this fix if even one flush list was empty we would end up breaking WAL. ------------------------------------------------------------------------ r6987 | sbains | 2010-04-14 00:14:13 +0300 (Wed, 14 Apr 2010) | 12 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When calculating the oldest_lsn we can have a situation where we've iterated to say buffer pool 3 and another thread adds two new dirty pages, the first to buffer pool 1 and the second to buffer pool 4. Up to say buffer pool 3 the oldest_lsn was 0. Now, we will end up returning the lsn at buffer pool 4 as the oldest LSN. We prevent this by acquiring the flush order mutex. One other future option is to calculate the min_lsn when flushing pages from the list and maintaining a running total using atomics. That way we can get rid of this function altogether. The atomics will only really be required when we do parallel flushing. ------------------------------------------------------------------------ r6992 | sbains | 2010-04-14 02:45:59 +0300 (Wed, 14 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/include/ut0rbt.h M /branches/innodb+multibp/ut/ut0rbt.c branches/innodb+multibp: Fix copyright of the rbt code. ------------------------------------------------------------------------
2010-04-19 17:44:15 +02:00
/** Red black tree node */
2013-03-25 23:03:13 +01:00
struct ib_rbt_node_t {
ib_rbt_color_t color; /* color of this node */
ib_rbt_node_t* left; /* points left child */
ib_rbt_node_t* right; /* points right child */
ib_rbt_node_t* parent; /* points parent node */
char value[1]; /* Data value */
};
branches/innodb+ Merge r6915:6992 from branches/innodb+multipbp (i.e.: all the changes made since it's creation) This also reverts r6930 to branches/innodb+ because a different solution for that issue is already present in innodb+multibp which is being merged. After this commit branches/innodb+multibp should be discarded and this branch should become our main development tree. ------------------------------------------------------------------------ r6915 | sbains | 2010-03-31 07:33:43 +0300 (Wed, 31 Mar 2010) | 1 line Changed paths: A /branches/innodb+multibp (from /branches/innodb+:6914) Creating a branch for the multiple buffer pool ------------------------------------------------------------------------ r6916 | sbains | 2010-03-31 08:21:00 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/btr/btr0btr.c M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/btr/btr0sea.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/buf/buf0rea.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/handler/i_s.cc M /branches/innodb+multibp/ibuf/ibuf0ibuf.c M /branches/innodb+multibp/include/buf0buddy.h M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/buf0lru.h M /branches/innodb+multibp/include/buf0rea.h M /branches/innodb+multibp/include/buf0types.h M /branches/innodb+multibp/include/ibuf0ibuf.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/univ.i M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mem/mem0mem.c M /branches/innodb+multibp/page/page0zip.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/trx/trx0trx.c M /branches/innodb+multibp/trx/trx0undo.c branches/innodb+multibp: Unable to crash it with UNIV_DEBUG and UNIV_SYNC_DEBUG with both ibtests and Sysbench. The patch now needs a workout from Michael. ------------------------------------------------------------------------ r6917 | sbains | 2010-03-31 08:56:18 +0300 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix error introduced in r6916. ------------------------------------------------------------------------ r6923 | sbains | 2010-03-31 15:16:04 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/page/page0zip.c branches/innodb+multibp: Fix whitespace issues. Add function buf_pool_from_block(). Add some comments to parameters. ------------------------------------------------------------------------ r6932 | sbains | 2010-04-01 01:12:07 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/univ.i branches/innodb+multibp: Remove bogus assertion. It's possible for the space and offset of a page to be undefined during the lifecycle of a page. Remove the debug #defines from univ.i. ------------------------------------------------------------------------ r6933 | sbains | 2010-04-01 01:22:40 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/srv/srv0start.c branches/innodb+multibp: Fix whitespace issues. ------------------------------------------------------------------------ r6934 | sbains | 2010-04-01 01:53:18 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/ChangeLog M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/include/trx0purge.h M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/mysql-test/innodb_bug38231.test A /branches/innodb+multibp/mysql-test/innodb_bug51920.result (from /branches/innodb+/mysql-test/innodb_bug51920.result:6931) A /branches/innodb+multibp/mysql-test/innodb_bug51920.test (from /branches/innodb+/mysql-test/innodb_bug51920.test:6931) M /branches/innodb+multibp/row/row0sel.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/sync/sync0sync.c M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: Merge revisions r6914:6931 from branches/innodb+ ------------------------------------------------------------------------ r6935 | sbains | 2010-04-01 02:08:32 +0300 (Thu, 01 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/mtr/mtr0mtr.c branches/innodb+multibp: Fix the debug assertions for flush order mutex. These were missed in r6934. ------------------------------------------------------------------------ r6936 | sbains | 2010-04-01 02:46:52 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp: Because now we have multiple instances of a mutex at the same level and these mutexes can be acquired simultaneously we can't simply check for <= level. We need to check for <= level - 1. ------------------------------------------------------------------------ r6937 | sbains | 2010-04-01 04:40:17 +0300 (Thu, 01 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: We need to check if the history list len is > than some threshold not that it is evenly divisible by the some batch size. While running tests on dscczz01 I've observed that the purge thread can't keep up with the generation of the UNDO log records because of the faster code. ------------------------------------------------------------------------ r6938 | irana | 2010-04-01 10:15:00 +0300 (Thu, 01 Apr 2010) | 7 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/log0log.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp The buf_flush_order patch that was ported in from 1.1 won't work with multiple buffer pools. This patch moves the mutex protecting order of insertion in the flush list(s) to log_sys struct so that we can have one global mutex protecting insertions into all flush list(s) ------------------------------------------------------------------------ r6941 | sbains | 2010-04-02 00:51:28 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp: We should get the record heap no to check recursively only if we are checking a record lock. Prior to this fix we were doing it for table locks as well, this is a bug. ------------------------------------------------------------------------ r6942 | csun | 2010-04-02 02:39:10 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/ha/ha0ha.c branches/innodb+multibp: fix compiler errors on Windows. Move ut_ad() to after declarations for C file. ------------------------------------------------------------------------ r6943 | sbains | 2010-04-03 05:14:25 +0300 (Sat, 03 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: Remove the code that created the fake buffer pool. ------------------------------------------------------------------------ r6945 | irana | 2010-04-05 23:35:29 +0300 (Mon, 05 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Revert r6941 as it does not resolve the issue and we have to take back the whole fix for bug#49047 ------------------------------------------------------------------------ r6946 | irana | 2010-04-05 23:50:42 +0300 (Mon, 05 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Merged revisions 6932:6944 from branches/innodb+ This solely includes the reversal of fix for bug#49047 ------------------------------------------------------------------------ r6947 | sbains | 2010-04-06 01:33:46 +0300 (Tue, 06 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0lru.c branches/innodb+multibp: Remove the log sys mutex acquisition when doing buffer pool stat aggregation. A dirty read here should suffice. ------------------------------------------------------------------------ r6951 | irana | 2010-04-06 17:25:29 +0300 (Tue, 06 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+mbp Initialize the buf_page_t::buf_pool pointer when the descriptor is allocated using buf_buddy_alloc(). ------------------------------------------------------------------------ r6954 | jyang | 2010-04-06 21:24:46 +0300 (Tue, 06 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix a possible null pointer of index_mapping in a race condition. ------------------------------------------------------------------------ r6958 | sbains | 2010-04-07 00:27:44 +0300 (Wed, 07 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/include/ut0mem.h M /branches/innodb+multibp/ut/ut0mem.c branches/innodb+multibp: Fix part of Bug#52546. We allow ut_free() to accept a NULL pointer and treat it as a nop. ------------------------------------------------------------------------ r6961 | jyang | 2010-04-07 10:50:03 +0300 (Wed, 07 Apr 2010) | 9 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix for bug #52580: Crash in ha_innobase::open on executing INSERT with concurrent ALTER TABLE. Change in MySQL bug #51557 releases the mutex LOCK_open before ha_innobase::open(), causing racing condition for index translation table creation. Fix it by adding dict_sys mutex for the operation. rb://283, approved by Marko. ------------------------------------------------------------------------ r6963 | irana | 2010-04-07 19:14:10 +0300 (Wed, 07 Apr 2010) | 15 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Force setting of buf_pool->LRU_old_ratio by calling buf_LRU_old_ratio_update() with adjust set to TRUE. This will make sure that we grab the buf_pool mutex and actually adjust the buf_pool->LRU_old pointer instead of just updating the buf_pool->LRU_old_ratio. Note that after this change there is no call to buf_LRU_old_ratio_update() with adjust set to FALSE and therefore this parameter should be removed. I am keeping it for now to first make sure that the fix does work. Approved by: No one. Sunny agreed with my hypothesis of the problem. ------------------------------------------------------------------------ r6964 | irana | 2010-04-07 19:59:59 +0300 (Wed, 07 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Remove a too strong assertion on behalf of Jimmy. ------------------------------------------------------------------------ r6971 | sbains | 2010-04-09 13:23:33 +0300 (Fri, 09 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When getting the oldest (minimum) LSN value from all the flush lists we need to acquire the flush list mutex. We were incorrectly acquiring the buffer pool mutex. This patch should fix a slew of bugs reported by Michael. ------------------------------------------------------------------------ r6972 | sbains | 2010-04-10 00:25:09 +0300 (Sat, 10 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: We should not reset the lsn to 0 when we encounter an empty flush list. Oldest LSN should be 0 only when all flush lists are empty. e.g., without this fix if even one flush list was empty we would end up breaking WAL. ------------------------------------------------------------------------ r6987 | sbains | 2010-04-14 00:14:13 +0300 (Wed, 14 Apr 2010) | 12 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When calculating the oldest_lsn we can have a situation where we've iterated to say buffer pool 3 and another thread adds two new dirty pages, the first to buffer pool 1 and the second to buffer pool 4. Up to say buffer pool 3 the oldest_lsn was 0. Now, we will end up returning the lsn at buffer pool 4 as the oldest LSN. We prevent this by acquiring the flush order mutex. One other future option is to calculate the min_lsn when flushing pages from the list and maintaining a running total using atomics. That way we can get rid of this function altogether. The atomics will only really be required when we do parallel flushing. ------------------------------------------------------------------------ r6992 | sbains | 2010-04-14 02:45:59 +0300 (Wed, 14 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/include/ut0rbt.h M /branches/innodb+multibp/ut/ut0rbt.c branches/innodb+multibp: Fix copyright of the rbt code. ------------------------------------------------------------------------
2010-04-19 17:44:15 +02:00
/** Red black tree instance.*/
2013-03-25 23:03:13 +01:00
struct ib_rbt_t {
ib_rbt_node_t* nil; /* Black colored node that is
used as a sentinel. This is
pre-allocated too.*/
ib_rbt_node_t* root; /* Root of the tree, this is
pre-allocated and the first
data node is the left child.*/
ulint n_nodes; /* Total number of data nodes */
ib_rbt_compare compare; /* Fn. to use for comparison */
ib_rbt_arg_compare
compare_with_arg; /* Fn. to use for comparison
with argument */
ulint sizeof_value; /* Sizeof the item in bytes */
2013-03-25 23:03:13 +01:00
void* cmp_arg; /* Compare func argument */
};
branches/innodb+ Merge r6915:6992 from branches/innodb+multipbp (i.e.: all the changes made since it's creation) This also reverts r6930 to branches/innodb+ because a different solution for that issue is already present in innodb+multibp which is being merged. After this commit branches/innodb+multibp should be discarded and this branch should become our main development tree. ------------------------------------------------------------------------ r6915 | sbains | 2010-03-31 07:33:43 +0300 (Wed, 31 Mar 2010) | 1 line Changed paths: A /branches/innodb+multibp (from /branches/innodb+:6914) Creating a branch for the multiple buffer pool ------------------------------------------------------------------------ r6916 | sbains | 2010-03-31 08:21:00 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/btr/btr0btr.c M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/btr/btr0sea.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/buf/buf0rea.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/handler/i_s.cc M /branches/innodb+multibp/ibuf/ibuf0ibuf.c M /branches/innodb+multibp/include/buf0buddy.h M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/buf0lru.h M /branches/innodb+multibp/include/buf0rea.h M /branches/innodb+multibp/include/buf0types.h M /branches/innodb+multibp/include/ibuf0ibuf.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/univ.i M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mem/mem0mem.c M /branches/innodb+multibp/page/page0zip.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/trx/trx0trx.c M /branches/innodb+multibp/trx/trx0undo.c branches/innodb+multibp: Unable to crash it with UNIV_DEBUG and UNIV_SYNC_DEBUG with both ibtests and Sysbench. The patch now needs a workout from Michael. ------------------------------------------------------------------------ r6917 | sbains | 2010-03-31 08:56:18 +0300 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix error introduced in r6916. ------------------------------------------------------------------------ r6923 | sbains | 2010-03-31 15:16:04 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/page/page0zip.c branches/innodb+multibp: Fix whitespace issues. Add function buf_pool_from_block(). Add some comments to parameters. ------------------------------------------------------------------------ r6932 | sbains | 2010-04-01 01:12:07 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/univ.i branches/innodb+multibp: Remove bogus assertion. It's possible for the space and offset of a page to be undefined during the lifecycle of a page. Remove the debug #defines from univ.i. ------------------------------------------------------------------------ r6933 | sbains | 2010-04-01 01:22:40 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/srv/srv0start.c branches/innodb+multibp: Fix whitespace issues. ------------------------------------------------------------------------ r6934 | sbains | 2010-04-01 01:53:18 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/ChangeLog M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/include/trx0purge.h M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/mysql-test/innodb_bug38231.test A /branches/innodb+multibp/mysql-test/innodb_bug51920.result (from /branches/innodb+/mysql-test/innodb_bug51920.result:6931) A /branches/innodb+multibp/mysql-test/innodb_bug51920.test (from /branches/innodb+/mysql-test/innodb_bug51920.test:6931) M /branches/innodb+multibp/row/row0sel.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/sync/sync0sync.c M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: Merge revisions r6914:6931 from branches/innodb+ ------------------------------------------------------------------------ r6935 | sbains | 2010-04-01 02:08:32 +0300 (Thu, 01 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/mtr/mtr0mtr.c branches/innodb+multibp: Fix the debug assertions for flush order mutex. These were missed in r6934. ------------------------------------------------------------------------ r6936 | sbains | 2010-04-01 02:46:52 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp: Because now we have multiple instances of a mutex at the same level and these mutexes can be acquired simultaneously we can't simply check for <= level. We need to check for <= level - 1. ------------------------------------------------------------------------ r6937 | sbains | 2010-04-01 04:40:17 +0300 (Thu, 01 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: We need to check if the history list len is > than some threshold not that it is evenly divisible by the some batch size. While running tests on dscczz01 I've observed that the purge thread can't keep up with the generation of the UNDO log records because of the faster code. ------------------------------------------------------------------------ r6938 | irana | 2010-04-01 10:15:00 +0300 (Thu, 01 Apr 2010) | 7 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/log0log.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp The buf_flush_order patch that was ported in from 1.1 won't work with multiple buffer pools. This patch moves the mutex protecting order of insertion in the flush list(s) to log_sys struct so that we can have one global mutex protecting insertions into all flush list(s) ------------------------------------------------------------------------ r6941 | sbains | 2010-04-02 00:51:28 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp: We should get the record heap no to check recursively only if we are checking a record lock. Prior to this fix we were doing it for table locks as well, this is a bug. ------------------------------------------------------------------------ r6942 | csun | 2010-04-02 02:39:10 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/ha/ha0ha.c branches/innodb+multibp: fix compiler errors on Windows. Move ut_ad() to after declarations for C file. ------------------------------------------------------------------------ r6943 | sbains | 2010-04-03 05:14:25 +0300 (Sat, 03 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: Remove the code that created the fake buffer pool. ------------------------------------------------------------------------ r6945 | irana | 2010-04-05 23:35:29 +0300 (Mon, 05 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Revert r6941 as it does not resolve the issue and we have to take back the whole fix for bug#49047 ------------------------------------------------------------------------ r6946 | irana | 2010-04-05 23:50:42 +0300 (Mon, 05 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Merged revisions 6932:6944 from branches/innodb+ This solely includes the reversal of fix for bug#49047 ------------------------------------------------------------------------ r6947 | sbains | 2010-04-06 01:33:46 +0300 (Tue, 06 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0lru.c branches/innodb+multibp: Remove the log sys mutex acquisition when doing buffer pool stat aggregation. A dirty read here should suffice. ------------------------------------------------------------------------ r6951 | irana | 2010-04-06 17:25:29 +0300 (Tue, 06 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+mbp Initialize the buf_page_t::buf_pool pointer when the descriptor is allocated using buf_buddy_alloc(). ------------------------------------------------------------------------ r6954 | jyang | 2010-04-06 21:24:46 +0300 (Tue, 06 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix a possible null pointer of index_mapping in a race condition. ------------------------------------------------------------------------ r6958 | sbains | 2010-04-07 00:27:44 +0300 (Wed, 07 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/include/ut0mem.h M /branches/innodb+multibp/ut/ut0mem.c branches/innodb+multibp: Fix part of Bug#52546. We allow ut_free() to accept a NULL pointer and treat it as a nop. ------------------------------------------------------------------------ r6961 | jyang | 2010-04-07 10:50:03 +0300 (Wed, 07 Apr 2010) | 9 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix for bug #52580: Crash in ha_innobase::open on executing INSERT with concurrent ALTER TABLE. Change in MySQL bug #51557 releases the mutex LOCK_open before ha_innobase::open(), causing racing condition for index translation table creation. Fix it by adding dict_sys mutex for the operation. rb://283, approved by Marko. ------------------------------------------------------------------------ r6963 | irana | 2010-04-07 19:14:10 +0300 (Wed, 07 Apr 2010) | 15 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Force setting of buf_pool->LRU_old_ratio by calling buf_LRU_old_ratio_update() with adjust set to TRUE. This will make sure that we grab the buf_pool mutex and actually adjust the buf_pool->LRU_old pointer instead of just updating the buf_pool->LRU_old_ratio. Note that after this change there is no call to buf_LRU_old_ratio_update() with adjust set to FALSE and therefore this parameter should be removed. I am keeping it for now to first make sure that the fix does work. Approved by: No one. Sunny agreed with my hypothesis of the problem. ------------------------------------------------------------------------ r6964 | irana | 2010-04-07 19:59:59 +0300 (Wed, 07 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Remove a too strong assertion on behalf of Jimmy. ------------------------------------------------------------------------ r6971 | sbains | 2010-04-09 13:23:33 +0300 (Fri, 09 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When getting the oldest (minimum) LSN value from all the flush lists we need to acquire the flush list mutex. We were incorrectly acquiring the buffer pool mutex. This patch should fix a slew of bugs reported by Michael. ------------------------------------------------------------------------ r6972 | sbains | 2010-04-10 00:25:09 +0300 (Sat, 10 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: We should not reset the lsn to 0 when we encounter an empty flush list. Oldest LSN should be 0 only when all flush lists are empty. e.g., without this fix if even one flush list was empty we would end up breaking WAL. ------------------------------------------------------------------------ r6987 | sbains | 2010-04-14 00:14:13 +0300 (Wed, 14 Apr 2010) | 12 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When calculating the oldest_lsn we can have a situation where we've iterated to say buffer pool 3 and another thread adds two new dirty pages, the first to buffer pool 1 and the second to buffer pool 4. Up to say buffer pool 3 the oldest_lsn was 0. Now, we will end up returning the lsn at buffer pool 4 as the oldest LSN. We prevent this by acquiring the flush order mutex. One other future option is to calculate the min_lsn when flushing pages from the list and maintaining a running total using atomics. That way we can get rid of this function altogether. The atomics will only really be required when we do parallel flushing. ------------------------------------------------------------------------ r6992 | sbains | 2010-04-14 02:45:59 +0300 (Wed, 14 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/include/ut0rbt.h M /branches/innodb+multibp/ut/ut0rbt.c branches/innodb+multibp: Fix copyright of the rbt code. ------------------------------------------------------------------------
2010-04-19 17:44:15 +02:00
/** The result of searching for a key in the tree, this is useful for
a speedy lookup and insert if key doesn't exist.*/
2013-03-25 23:03:13 +01:00
struct ib_rbt_bound_t {
const ib_rbt_node_t*
last; /* Last node visited */
int result; /* Result of comparing with
the last non-nil node that
was visited */
};
/* Size in elements (t is an rb tree instance) */
#define rbt_size(t) (t->n_nodes)
/* Check whether the rb tree is empty (t is an rb tree instance) */
#define rbt_empty(t) (rbt_size(t) == 0)
/* Get data value (t is the data type, n is an rb tree node instance) */
#define rbt_value(t, n) ((t*) &n->value[0])
/* Compare a key with the node value (t is tree, k is key, n is node)*/
#define rbt_compare(t, k, n) (t->compare(k, n->value))
branches/innodb+ Merge r6915:6992 from branches/innodb+multipbp (i.e.: all the changes made since it's creation) This also reverts r6930 to branches/innodb+ because a different solution for that issue is already present in innodb+multibp which is being merged. After this commit branches/innodb+multibp should be discarded and this branch should become our main development tree. ------------------------------------------------------------------------ r6915 | sbains | 2010-03-31 07:33:43 +0300 (Wed, 31 Mar 2010) | 1 line Changed paths: A /branches/innodb+multibp (from /branches/innodb+:6914) Creating a branch for the multiple buffer pool ------------------------------------------------------------------------ r6916 | sbains | 2010-03-31 08:21:00 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/btr/btr0btr.c M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/btr/btr0sea.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/buf/buf0rea.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/handler/i_s.cc M /branches/innodb+multibp/ibuf/ibuf0ibuf.c M /branches/innodb+multibp/include/buf0buddy.h M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/buf0lru.h M /branches/innodb+multibp/include/buf0rea.h M /branches/innodb+multibp/include/buf0types.h M /branches/innodb+multibp/include/ibuf0ibuf.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/univ.i M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mem/mem0mem.c M /branches/innodb+multibp/page/page0zip.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/trx/trx0trx.c M /branches/innodb+multibp/trx/trx0undo.c branches/innodb+multibp: Unable to crash it with UNIV_DEBUG and UNIV_SYNC_DEBUG with both ibtests and Sysbench. The patch now needs a workout from Michael. ------------------------------------------------------------------------ r6917 | sbains | 2010-03-31 08:56:18 +0300 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix error introduced in r6916. ------------------------------------------------------------------------ r6923 | sbains | 2010-03-31 15:16:04 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/page/page0zip.c branches/innodb+multibp: Fix whitespace issues. Add function buf_pool_from_block(). Add some comments to parameters. ------------------------------------------------------------------------ r6932 | sbains | 2010-04-01 01:12:07 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/univ.i branches/innodb+multibp: Remove bogus assertion. It's possible for the space and offset of a page to be undefined during the lifecycle of a page. Remove the debug #defines from univ.i. ------------------------------------------------------------------------ r6933 | sbains | 2010-04-01 01:22:40 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/srv/srv0start.c branches/innodb+multibp: Fix whitespace issues. ------------------------------------------------------------------------ r6934 | sbains | 2010-04-01 01:53:18 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/ChangeLog M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/include/trx0purge.h M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/mysql-test/innodb_bug38231.test A /branches/innodb+multibp/mysql-test/innodb_bug51920.result (from /branches/innodb+/mysql-test/innodb_bug51920.result:6931) A /branches/innodb+multibp/mysql-test/innodb_bug51920.test (from /branches/innodb+/mysql-test/innodb_bug51920.test:6931) M /branches/innodb+multibp/row/row0sel.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/sync/sync0sync.c M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: Merge revisions r6914:6931 from branches/innodb+ ------------------------------------------------------------------------ r6935 | sbains | 2010-04-01 02:08:32 +0300 (Thu, 01 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/mtr/mtr0mtr.c branches/innodb+multibp: Fix the debug assertions for flush order mutex. These were missed in r6934. ------------------------------------------------------------------------ r6936 | sbains | 2010-04-01 02:46:52 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp: Because now we have multiple instances of a mutex at the same level and these mutexes can be acquired simultaneously we can't simply check for <= level. We need to check for <= level - 1. ------------------------------------------------------------------------ r6937 | sbains | 2010-04-01 04:40:17 +0300 (Thu, 01 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: We need to check if the history list len is > than some threshold not that it is evenly divisible by the some batch size. While running tests on dscczz01 I've observed that the purge thread can't keep up with the generation of the UNDO log records because of the faster code. ------------------------------------------------------------------------ r6938 | irana | 2010-04-01 10:15:00 +0300 (Thu, 01 Apr 2010) | 7 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/log0log.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp The buf_flush_order patch that was ported in from 1.1 won't work with multiple buffer pools. This patch moves the mutex protecting order of insertion in the flush list(s) to log_sys struct so that we can have one global mutex protecting insertions into all flush list(s) ------------------------------------------------------------------------ r6941 | sbains | 2010-04-02 00:51:28 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp: We should get the record heap no to check recursively only if we are checking a record lock. Prior to this fix we were doing it for table locks as well, this is a bug. ------------------------------------------------------------------------ r6942 | csun | 2010-04-02 02:39:10 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/ha/ha0ha.c branches/innodb+multibp: fix compiler errors on Windows. Move ut_ad() to after declarations for C file. ------------------------------------------------------------------------ r6943 | sbains | 2010-04-03 05:14:25 +0300 (Sat, 03 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: Remove the code that created the fake buffer pool. ------------------------------------------------------------------------ r6945 | irana | 2010-04-05 23:35:29 +0300 (Mon, 05 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Revert r6941 as it does not resolve the issue and we have to take back the whole fix for bug#49047 ------------------------------------------------------------------------ r6946 | irana | 2010-04-05 23:50:42 +0300 (Mon, 05 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Merged revisions 6932:6944 from branches/innodb+ This solely includes the reversal of fix for bug#49047 ------------------------------------------------------------------------ r6947 | sbains | 2010-04-06 01:33:46 +0300 (Tue, 06 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0lru.c branches/innodb+multibp: Remove the log sys mutex acquisition when doing buffer pool stat aggregation. A dirty read here should suffice. ------------------------------------------------------------------------ r6951 | irana | 2010-04-06 17:25:29 +0300 (Tue, 06 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+mbp Initialize the buf_page_t::buf_pool pointer when the descriptor is allocated using buf_buddy_alloc(). ------------------------------------------------------------------------ r6954 | jyang | 2010-04-06 21:24:46 +0300 (Tue, 06 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix a possible null pointer of index_mapping in a race condition. ------------------------------------------------------------------------ r6958 | sbains | 2010-04-07 00:27:44 +0300 (Wed, 07 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/include/ut0mem.h M /branches/innodb+multibp/ut/ut0mem.c branches/innodb+multibp: Fix part of Bug#52546. We allow ut_free() to accept a NULL pointer and treat it as a nop. ------------------------------------------------------------------------ r6961 | jyang | 2010-04-07 10:50:03 +0300 (Wed, 07 Apr 2010) | 9 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix for bug #52580: Crash in ha_innobase::open on executing INSERT with concurrent ALTER TABLE. Change in MySQL bug #51557 releases the mutex LOCK_open before ha_innobase::open(), causing racing condition for index translation table creation. Fix it by adding dict_sys mutex for the operation. rb://283, approved by Marko. ------------------------------------------------------------------------ r6963 | irana | 2010-04-07 19:14:10 +0300 (Wed, 07 Apr 2010) | 15 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Force setting of buf_pool->LRU_old_ratio by calling buf_LRU_old_ratio_update() with adjust set to TRUE. This will make sure that we grab the buf_pool mutex and actually adjust the buf_pool->LRU_old pointer instead of just updating the buf_pool->LRU_old_ratio. Note that after this change there is no call to buf_LRU_old_ratio_update() with adjust set to FALSE and therefore this parameter should be removed. I am keeping it for now to first make sure that the fix does work. Approved by: No one. Sunny agreed with my hypothesis of the problem. ------------------------------------------------------------------------ r6964 | irana | 2010-04-07 19:59:59 +0300 (Wed, 07 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Remove a too strong assertion on behalf of Jimmy. ------------------------------------------------------------------------ r6971 | sbains | 2010-04-09 13:23:33 +0300 (Fri, 09 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When getting the oldest (minimum) LSN value from all the flush lists we need to acquire the flush list mutex. We were incorrectly acquiring the buffer pool mutex. This patch should fix a slew of bugs reported by Michael. ------------------------------------------------------------------------ r6972 | sbains | 2010-04-10 00:25:09 +0300 (Sat, 10 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: We should not reset the lsn to 0 when we encounter an empty flush list. Oldest LSN should be 0 only when all flush lists are empty. e.g., without this fix if even one flush list was empty we would end up breaking WAL. ------------------------------------------------------------------------ r6987 | sbains | 2010-04-14 00:14:13 +0300 (Wed, 14 Apr 2010) | 12 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When calculating the oldest_lsn we can have a situation where we've iterated to say buffer pool 3 and another thread adds two new dirty pages, the first to buffer pool 1 and the second to buffer pool 4. Up to say buffer pool 3 the oldest_lsn was 0. Now, we will end up returning the lsn at buffer pool 4 as the oldest LSN. We prevent this by acquiring the flush order mutex. One other future option is to calculate the min_lsn when flushing pages from the list and maintaining a running total using atomics. That way we can get rid of this function altogether. The atomics will only really be required when we do parallel flushing. ------------------------------------------------------------------------ r6992 | sbains | 2010-04-14 02:45:59 +0300 (Wed, 14 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/include/ut0rbt.h M /branches/innodb+multibp/ut/ut0rbt.c branches/innodb+multibp: Fix copyright of the rbt code. ------------------------------------------------------------------------
2010-04-19 17:44:15 +02:00
/**********************************************************************//**
Free an instance of a red black tree */
void
rbt_free(
/*=====*/
ib_rbt_t* tree); /*!< in: rb tree to free */
branches/innodb+ Merge r6915:6992 from branches/innodb+multipbp (i.e.: all the changes made since it's creation) This also reverts r6930 to branches/innodb+ because a different solution for that issue is already present in innodb+multibp which is being merged. After this commit branches/innodb+multibp should be discarded and this branch should become our main development tree. ------------------------------------------------------------------------ r6915 | sbains | 2010-03-31 07:33:43 +0300 (Wed, 31 Mar 2010) | 1 line Changed paths: A /branches/innodb+multibp (from /branches/innodb+:6914) Creating a branch for the multiple buffer pool ------------------------------------------------------------------------ r6916 | sbains | 2010-03-31 08:21:00 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/btr/btr0btr.c M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/btr/btr0sea.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/buf/buf0rea.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/handler/i_s.cc M /branches/innodb+multibp/ibuf/ibuf0ibuf.c M /branches/innodb+multibp/include/buf0buddy.h M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/buf0lru.h M /branches/innodb+multibp/include/buf0rea.h M /branches/innodb+multibp/include/buf0types.h M /branches/innodb+multibp/include/ibuf0ibuf.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/univ.i M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mem/mem0mem.c M /branches/innodb+multibp/page/page0zip.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/trx/trx0trx.c M /branches/innodb+multibp/trx/trx0undo.c branches/innodb+multibp: Unable to crash it with UNIV_DEBUG and UNIV_SYNC_DEBUG with both ibtests and Sysbench. The patch now needs a workout from Michael. ------------------------------------------------------------------------ r6917 | sbains | 2010-03-31 08:56:18 +0300 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix error introduced in r6916. ------------------------------------------------------------------------ r6923 | sbains | 2010-03-31 15:16:04 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/page/page0zip.c branches/innodb+multibp: Fix whitespace issues. Add function buf_pool_from_block(). Add some comments to parameters. ------------------------------------------------------------------------ r6932 | sbains | 2010-04-01 01:12:07 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/univ.i branches/innodb+multibp: Remove bogus assertion. It's possible for the space and offset of a page to be undefined during the lifecycle of a page. Remove the debug #defines from univ.i. ------------------------------------------------------------------------ r6933 | sbains | 2010-04-01 01:22:40 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/srv/srv0start.c branches/innodb+multibp: Fix whitespace issues. ------------------------------------------------------------------------ r6934 | sbains | 2010-04-01 01:53:18 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/ChangeLog M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/include/trx0purge.h M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/mysql-test/innodb_bug38231.test A /branches/innodb+multibp/mysql-test/innodb_bug51920.result (from /branches/innodb+/mysql-test/innodb_bug51920.result:6931) A /branches/innodb+multibp/mysql-test/innodb_bug51920.test (from /branches/innodb+/mysql-test/innodb_bug51920.test:6931) M /branches/innodb+multibp/row/row0sel.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/sync/sync0sync.c M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: Merge revisions r6914:6931 from branches/innodb+ ------------------------------------------------------------------------ r6935 | sbains | 2010-04-01 02:08:32 +0300 (Thu, 01 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/mtr/mtr0mtr.c branches/innodb+multibp: Fix the debug assertions for flush order mutex. These were missed in r6934. ------------------------------------------------------------------------ r6936 | sbains | 2010-04-01 02:46:52 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp: Because now we have multiple instances of a mutex at the same level and these mutexes can be acquired simultaneously we can't simply check for <= level. We need to check for <= level - 1. ------------------------------------------------------------------------ r6937 | sbains | 2010-04-01 04:40:17 +0300 (Thu, 01 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: We need to check if the history list len is > than some threshold not that it is evenly divisible by the some batch size. While running tests on dscczz01 I've observed that the purge thread can't keep up with the generation of the UNDO log records because of the faster code. ------------------------------------------------------------------------ r6938 | irana | 2010-04-01 10:15:00 +0300 (Thu, 01 Apr 2010) | 7 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/log0log.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp The buf_flush_order patch that was ported in from 1.1 won't work with multiple buffer pools. This patch moves the mutex protecting order of insertion in the flush list(s) to log_sys struct so that we can have one global mutex protecting insertions into all flush list(s) ------------------------------------------------------------------------ r6941 | sbains | 2010-04-02 00:51:28 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp: We should get the record heap no to check recursively only if we are checking a record lock. Prior to this fix we were doing it for table locks as well, this is a bug. ------------------------------------------------------------------------ r6942 | csun | 2010-04-02 02:39:10 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/ha/ha0ha.c branches/innodb+multibp: fix compiler errors on Windows. Move ut_ad() to after declarations for C file. ------------------------------------------------------------------------ r6943 | sbains | 2010-04-03 05:14:25 +0300 (Sat, 03 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: Remove the code that created the fake buffer pool. ------------------------------------------------------------------------ r6945 | irana | 2010-04-05 23:35:29 +0300 (Mon, 05 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Revert r6941 as it does not resolve the issue and we have to take back the whole fix for bug#49047 ------------------------------------------------------------------------ r6946 | irana | 2010-04-05 23:50:42 +0300 (Mon, 05 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Merged revisions 6932:6944 from branches/innodb+ This solely includes the reversal of fix for bug#49047 ------------------------------------------------------------------------ r6947 | sbains | 2010-04-06 01:33:46 +0300 (Tue, 06 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0lru.c branches/innodb+multibp: Remove the log sys mutex acquisition when doing buffer pool stat aggregation. A dirty read here should suffice. ------------------------------------------------------------------------ r6951 | irana | 2010-04-06 17:25:29 +0300 (Tue, 06 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+mbp Initialize the buf_page_t::buf_pool pointer when the descriptor is allocated using buf_buddy_alloc(). ------------------------------------------------------------------------ r6954 | jyang | 2010-04-06 21:24:46 +0300 (Tue, 06 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix a possible null pointer of index_mapping in a race condition. ------------------------------------------------------------------------ r6958 | sbains | 2010-04-07 00:27:44 +0300 (Wed, 07 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/include/ut0mem.h M /branches/innodb+multibp/ut/ut0mem.c branches/innodb+multibp: Fix part of Bug#52546. We allow ut_free() to accept a NULL pointer and treat it as a nop. ------------------------------------------------------------------------ r6961 | jyang | 2010-04-07 10:50:03 +0300 (Wed, 07 Apr 2010) | 9 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix for bug #52580: Crash in ha_innobase::open on executing INSERT with concurrent ALTER TABLE. Change in MySQL bug #51557 releases the mutex LOCK_open before ha_innobase::open(), causing racing condition for index translation table creation. Fix it by adding dict_sys mutex for the operation. rb://283, approved by Marko. ------------------------------------------------------------------------ r6963 | irana | 2010-04-07 19:14:10 +0300 (Wed, 07 Apr 2010) | 15 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Force setting of buf_pool->LRU_old_ratio by calling buf_LRU_old_ratio_update() with adjust set to TRUE. This will make sure that we grab the buf_pool mutex and actually adjust the buf_pool->LRU_old pointer instead of just updating the buf_pool->LRU_old_ratio. Note that after this change there is no call to buf_LRU_old_ratio_update() with adjust set to FALSE and therefore this parameter should be removed. I am keeping it for now to first make sure that the fix does work. Approved by: No one. Sunny agreed with my hypothesis of the problem. ------------------------------------------------------------------------ r6964 | irana | 2010-04-07 19:59:59 +0300 (Wed, 07 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Remove a too strong assertion on behalf of Jimmy. ------------------------------------------------------------------------ r6971 | sbains | 2010-04-09 13:23:33 +0300 (Fri, 09 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When getting the oldest (minimum) LSN value from all the flush lists we need to acquire the flush list mutex. We were incorrectly acquiring the buffer pool mutex. This patch should fix a slew of bugs reported by Michael. ------------------------------------------------------------------------ r6972 | sbains | 2010-04-10 00:25:09 +0300 (Sat, 10 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: We should not reset the lsn to 0 when we encounter an empty flush list. Oldest LSN should be 0 only when all flush lists are empty. e.g., without this fix if even one flush list was empty we would end up breaking WAL. ------------------------------------------------------------------------ r6987 | sbains | 2010-04-14 00:14:13 +0300 (Wed, 14 Apr 2010) | 12 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When calculating the oldest_lsn we can have a situation where we've iterated to say buffer pool 3 and another thread adds two new dirty pages, the first to buffer pool 1 and the second to buffer pool 4. Up to say buffer pool 3 the oldest_lsn was 0. Now, we will end up returning the lsn at buffer pool 4 as the oldest LSN. We prevent this by acquiring the flush order mutex. One other future option is to calculate the min_lsn when flushing pages from the list and maintaining a running total using atomics. That way we can get rid of this function altogether. The atomics will only really be required when we do parallel flushing. ------------------------------------------------------------------------ r6992 | sbains | 2010-04-14 02:45:59 +0300 (Wed, 14 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/include/ut0rbt.h M /branches/innodb+multibp/ut/ut0rbt.c branches/innodb+multibp: Fix copyright of the rbt code. ------------------------------------------------------------------------
2010-04-19 17:44:15 +02:00
/**********************************************************************//**
Create an instance of a red black tree
@return rb tree instance */
ib_rbt_t*
rbt_create(
/*=======*/
size_t sizeof_value, /*!< in: size in bytes */
ib_rbt_compare compare); /*!< in: comparator */
branches/innodb+ Merge r6915:6992 from branches/innodb+multipbp (i.e.: all the changes made since it's creation) This also reverts r6930 to branches/innodb+ because a different solution for that issue is already present in innodb+multibp which is being merged. After this commit branches/innodb+multibp should be discarded and this branch should become our main development tree. ------------------------------------------------------------------------ r6915 | sbains | 2010-03-31 07:33:43 +0300 (Wed, 31 Mar 2010) | 1 line Changed paths: A /branches/innodb+multibp (from /branches/innodb+:6914) Creating a branch for the multiple buffer pool ------------------------------------------------------------------------ r6916 | sbains | 2010-03-31 08:21:00 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/btr/btr0btr.c M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/btr/btr0sea.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/buf/buf0rea.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/handler/i_s.cc M /branches/innodb+multibp/ibuf/ibuf0ibuf.c M /branches/innodb+multibp/include/buf0buddy.h M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/buf0lru.h M /branches/innodb+multibp/include/buf0rea.h M /branches/innodb+multibp/include/buf0types.h M /branches/innodb+multibp/include/ibuf0ibuf.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/univ.i M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mem/mem0mem.c M /branches/innodb+multibp/page/page0zip.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/trx/trx0trx.c M /branches/innodb+multibp/trx/trx0undo.c branches/innodb+multibp: Unable to crash it with UNIV_DEBUG and UNIV_SYNC_DEBUG with both ibtests and Sysbench. The patch now needs a workout from Michael. ------------------------------------------------------------------------ r6917 | sbains | 2010-03-31 08:56:18 +0300 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix error introduced in r6916. ------------------------------------------------------------------------ r6923 | sbains | 2010-03-31 15:16:04 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/page/page0zip.c branches/innodb+multibp: Fix whitespace issues. Add function buf_pool_from_block(). Add some comments to parameters. ------------------------------------------------------------------------ r6932 | sbains | 2010-04-01 01:12:07 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/univ.i branches/innodb+multibp: Remove bogus assertion. It's possible for the space and offset of a page to be undefined during the lifecycle of a page. Remove the debug #defines from univ.i. ------------------------------------------------------------------------ r6933 | sbains | 2010-04-01 01:22:40 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/srv/srv0start.c branches/innodb+multibp: Fix whitespace issues. ------------------------------------------------------------------------ r6934 | sbains | 2010-04-01 01:53:18 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/ChangeLog M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/include/trx0purge.h M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/mysql-test/innodb_bug38231.test A /branches/innodb+multibp/mysql-test/innodb_bug51920.result (from /branches/innodb+/mysql-test/innodb_bug51920.result:6931) A /branches/innodb+multibp/mysql-test/innodb_bug51920.test (from /branches/innodb+/mysql-test/innodb_bug51920.test:6931) M /branches/innodb+multibp/row/row0sel.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/sync/sync0sync.c M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: Merge revisions r6914:6931 from branches/innodb+ ------------------------------------------------------------------------ r6935 | sbains | 2010-04-01 02:08:32 +0300 (Thu, 01 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/mtr/mtr0mtr.c branches/innodb+multibp: Fix the debug assertions for flush order mutex. These were missed in r6934. ------------------------------------------------------------------------ r6936 | sbains | 2010-04-01 02:46:52 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp: Because now we have multiple instances of a mutex at the same level and these mutexes can be acquired simultaneously we can't simply check for <= level. We need to check for <= level - 1. ------------------------------------------------------------------------ r6937 | sbains | 2010-04-01 04:40:17 +0300 (Thu, 01 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: We need to check if the history list len is > than some threshold not that it is evenly divisible by the some batch size. While running tests on dscczz01 I've observed that the purge thread can't keep up with the generation of the UNDO log records because of the faster code. ------------------------------------------------------------------------ r6938 | irana | 2010-04-01 10:15:00 +0300 (Thu, 01 Apr 2010) | 7 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/log0log.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp The buf_flush_order patch that was ported in from 1.1 won't work with multiple buffer pools. This patch moves the mutex protecting order of insertion in the flush list(s) to log_sys struct so that we can have one global mutex protecting insertions into all flush list(s) ------------------------------------------------------------------------ r6941 | sbains | 2010-04-02 00:51:28 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp: We should get the record heap no to check recursively only if we are checking a record lock. Prior to this fix we were doing it for table locks as well, this is a bug. ------------------------------------------------------------------------ r6942 | csun | 2010-04-02 02:39:10 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/ha/ha0ha.c branches/innodb+multibp: fix compiler errors on Windows. Move ut_ad() to after declarations for C file. ------------------------------------------------------------------------ r6943 | sbains | 2010-04-03 05:14:25 +0300 (Sat, 03 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: Remove the code that created the fake buffer pool. ------------------------------------------------------------------------ r6945 | irana | 2010-04-05 23:35:29 +0300 (Mon, 05 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Revert r6941 as it does not resolve the issue and we have to take back the whole fix for bug#49047 ------------------------------------------------------------------------ r6946 | irana | 2010-04-05 23:50:42 +0300 (Mon, 05 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Merged revisions 6932:6944 from branches/innodb+ This solely includes the reversal of fix for bug#49047 ------------------------------------------------------------------------ r6947 | sbains | 2010-04-06 01:33:46 +0300 (Tue, 06 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0lru.c branches/innodb+multibp: Remove the log sys mutex acquisition when doing buffer pool stat aggregation. A dirty read here should suffice. ------------------------------------------------------------------------ r6951 | irana | 2010-04-06 17:25:29 +0300 (Tue, 06 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+mbp Initialize the buf_page_t::buf_pool pointer when the descriptor is allocated using buf_buddy_alloc(). ------------------------------------------------------------------------ r6954 | jyang | 2010-04-06 21:24:46 +0300 (Tue, 06 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix a possible null pointer of index_mapping in a race condition. ------------------------------------------------------------------------ r6958 | sbains | 2010-04-07 00:27:44 +0300 (Wed, 07 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/include/ut0mem.h M /branches/innodb+multibp/ut/ut0mem.c branches/innodb+multibp: Fix part of Bug#52546. We allow ut_free() to accept a NULL pointer and treat it as a nop. ------------------------------------------------------------------------ r6961 | jyang | 2010-04-07 10:50:03 +0300 (Wed, 07 Apr 2010) | 9 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix for bug #52580: Crash in ha_innobase::open on executing INSERT with concurrent ALTER TABLE. Change in MySQL bug #51557 releases the mutex LOCK_open before ha_innobase::open(), causing racing condition for index translation table creation. Fix it by adding dict_sys mutex for the operation. rb://283, approved by Marko. ------------------------------------------------------------------------ r6963 | irana | 2010-04-07 19:14:10 +0300 (Wed, 07 Apr 2010) | 15 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Force setting of buf_pool->LRU_old_ratio by calling buf_LRU_old_ratio_update() with adjust set to TRUE. This will make sure that we grab the buf_pool mutex and actually adjust the buf_pool->LRU_old pointer instead of just updating the buf_pool->LRU_old_ratio. Note that after this change there is no call to buf_LRU_old_ratio_update() with adjust set to FALSE and therefore this parameter should be removed. I am keeping it for now to first make sure that the fix does work. Approved by: No one. Sunny agreed with my hypothesis of the problem. ------------------------------------------------------------------------ r6964 | irana | 2010-04-07 19:59:59 +0300 (Wed, 07 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Remove a too strong assertion on behalf of Jimmy. ------------------------------------------------------------------------ r6971 | sbains | 2010-04-09 13:23:33 +0300 (Fri, 09 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When getting the oldest (minimum) LSN value from all the flush lists we need to acquire the flush list mutex. We were incorrectly acquiring the buffer pool mutex. This patch should fix a slew of bugs reported by Michael. ------------------------------------------------------------------------ r6972 | sbains | 2010-04-10 00:25:09 +0300 (Sat, 10 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: We should not reset the lsn to 0 when we encounter an empty flush list. Oldest LSN should be 0 only when all flush lists are empty. e.g., without this fix if even one flush list was empty we would end up breaking WAL. ------------------------------------------------------------------------ r6987 | sbains | 2010-04-14 00:14:13 +0300 (Wed, 14 Apr 2010) | 12 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When calculating the oldest_lsn we can have a situation where we've iterated to say buffer pool 3 and another thread adds two new dirty pages, the first to buffer pool 1 and the second to buffer pool 4. Up to say buffer pool 3 the oldest_lsn was 0. Now, we will end up returning the lsn at buffer pool 4 as the oldest LSN. We prevent this by acquiring the flush order mutex. One other future option is to calculate the min_lsn when flushing pages from the list and maintaining a running total using atomics. That way we can get rid of this function altogether. The atomics will only really be required when we do parallel flushing. ------------------------------------------------------------------------ r6992 | sbains | 2010-04-14 02:45:59 +0300 (Wed, 14 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/include/ut0rbt.h M /branches/innodb+multibp/ut/ut0rbt.c branches/innodb+multibp: Fix copyright of the rbt code. ------------------------------------------------------------------------
2010-04-19 17:44:15 +02:00
/**********************************************************************//**
Create an instance of a red black tree, whose comparison function takes
an argument
@return rb tree instance */
ib_rbt_t*
rbt_create_arg_cmp(
/*===============*/
size_t sizeof_value, /*!< in: size in bytes */
ib_rbt_arg_compare
compare, /*!< in: comparator */
void* cmp_arg); /*!< in: compare fn arg */
/**********************************************************************//**
Delete a node from the red black tree, identified by key */
ibool
rbt_delete(
/*=======*/
/* in: TRUE on success */
ib_rbt_t* tree, /* in: rb tree */
const void* key); /* in: key to delete */
branches/innodb+ Merge r6915:6992 from branches/innodb+multipbp (i.e.: all the changes made since it's creation) This also reverts r6930 to branches/innodb+ because a different solution for that issue is already present in innodb+multibp which is being merged. After this commit branches/innodb+multibp should be discarded and this branch should become our main development tree. ------------------------------------------------------------------------ r6915 | sbains | 2010-03-31 07:33:43 +0300 (Wed, 31 Mar 2010) | 1 line Changed paths: A /branches/innodb+multibp (from /branches/innodb+:6914) Creating a branch for the multiple buffer pool ------------------------------------------------------------------------ r6916 | sbains | 2010-03-31 08:21:00 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/btr/btr0btr.c M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/btr/btr0sea.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/buf/buf0rea.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/handler/i_s.cc M /branches/innodb+multibp/ibuf/ibuf0ibuf.c M /branches/innodb+multibp/include/buf0buddy.h M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/buf0lru.h M /branches/innodb+multibp/include/buf0rea.h M /branches/innodb+multibp/include/buf0types.h M /branches/innodb+multibp/include/ibuf0ibuf.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/univ.i M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mem/mem0mem.c M /branches/innodb+multibp/page/page0zip.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/trx/trx0trx.c M /branches/innodb+multibp/trx/trx0undo.c branches/innodb+multibp: Unable to crash it with UNIV_DEBUG and UNIV_SYNC_DEBUG with both ibtests and Sysbench. The patch now needs a workout from Michael. ------------------------------------------------------------------------ r6917 | sbains | 2010-03-31 08:56:18 +0300 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix error introduced in r6916. ------------------------------------------------------------------------ r6923 | sbains | 2010-03-31 15:16:04 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/page/page0zip.c branches/innodb+multibp: Fix whitespace issues. Add function buf_pool_from_block(). Add some comments to parameters. ------------------------------------------------------------------------ r6932 | sbains | 2010-04-01 01:12:07 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/univ.i branches/innodb+multibp: Remove bogus assertion. It's possible for the space and offset of a page to be undefined during the lifecycle of a page. Remove the debug #defines from univ.i. ------------------------------------------------------------------------ r6933 | sbains | 2010-04-01 01:22:40 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/srv/srv0start.c branches/innodb+multibp: Fix whitespace issues. ------------------------------------------------------------------------ r6934 | sbains | 2010-04-01 01:53:18 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/ChangeLog M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/include/trx0purge.h M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/mysql-test/innodb_bug38231.test A /branches/innodb+multibp/mysql-test/innodb_bug51920.result (from /branches/innodb+/mysql-test/innodb_bug51920.result:6931) A /branches/innodb+multibp/mysql-test/innodb_bug51920.test (from /branches/innodb+/mysql-test/innodb_bug51920.test:6931) M /branches/innodb+multibp/row/row0sel.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/sync/sync0sync.c M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: Merge revisions r6914:6931 from branches/innodb+ ------------------------------------------------------------------------ r6935 | sbains | 2010-04-01 02:08:32 +0300 (Thu, 01 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/mtr/mtr0mtr.c branches/innodb+multibp: Fix the debug assertions for flush order mutex. These were missed in r6934. ------------------------------------------------------------------------ r6936 | sbains | 2010-04-01 02:46:52 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp: Because now we have multiple instances of a mutex at the same level and these mutexes can be acquired simultaneously we can't simply check for <= level. We need to check for <= level - 1. ------------------------------------------------------------------------ r6937 | sbains | 2010-04-01 04:40:17 +0300 (Thu, 01 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: We need to check if the history list len is > than some threshold not that it is evenly divisible by the some batch size. While running tests on dscczz01 I've observed that the purge thread can't keep up with the generation of the UNDO log records because of the faster code. ------------------------------------------------------------------------ r6938 | irana | 2010-04-01 10:15:00 +0300 (Thu, 01 Apr 2010) | 7 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/log0log.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp The buf_flush_order patch that was ported in from 1.1 won't work with multiple buffer pools. This patch moves the mutex protecting order of insertion in the flush list(s) to log_sys struct so that we can have one global mutex protecting insertions into all flush list(s) ------------------------------------------------------------------------ r6941 | sbains | 2010-04-02 00:51:28 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp: We should get the record heap no to check recursively only if we are checking a record lock. Prior to this fix we were doing it for table locks as well, this is a bug. ------------------------------------------------------------------------ r6942 | csun | 2010-04-02 02:39:10 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/ha/ha0ha.c branches/innodb+multibp: fix compiler errors on Windows. Move ut_ad() to after declarations for C file. ------------------------------------------------------------------------ r6943 | sbains | 2010-04-03 05:14:25 +0300 (Sat, 03 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: Remove the code that created the fake buffer pool. ------------------------------------------------------------------------ r6945 | irana | 2010-04-05 23:35:29 +0300 (Mon, 05 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Revert r6941 as it does not resolve the issue and we have to take back the whole fix for bug#49047 ------------------------------------------------------------------------ r6946 | irana | 2010-04-05 23:50:42 +0300 (Mon, 05 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Merged revisions 6932:6944 from branches/innodb+ This solely includes the reversal of fix for bug#49047 ------------------------------------------------------------------------ r6947 | sbains | 2010-04-06 01:33:46 +0300 (Tue, 06 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0lru.c branches/innodb+multibp: Remove the log sys mutex acquisition when doing buffer pool stat aggregation. A dirty read here should suffice. ------------------------------------------------------------------------ r6951 | irana | 2010-04-06 17:25:29 +0300 (Tue, 06 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+mbp Initialize the buf_page_t::buf_pool pointer when the descriptor is allocated using buf_buddy_alloc(). ------------------------------------------------------------------------ r6954 | jyang | 2010-04-06 21:24:46 +0300 (Tue, 06 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix a possible null pointer of index_mapping in a race condition. ------------------------------------------------------------------------ r6958 | sbains | 2010-04-07 00:27:44 +0300 (Wed, 07 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/include/ut0mem.h M /branches/innodb+multibp/ut/ut0mem.c branches/innodb+multibp: Fix part of Bug#52546. We allow ut_free() to accept a NULL pointer and treat it as a nop. ------------------------------------------------------------------------ r6961 | jyang | 2010-04-07 10:50:03 +0300 (Wed, 07 Apr 2010) | 9 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix for bug #52580: Crash in ha_innobase::open on executing INSERT with concurrent ALTER TABLE. Change in MySQL bug #51557 releases the mutex LOCK_open before ha_innobase::open(), causing racing condition for index translation table creation. Fix it by adding dict_sys mutex for the operation. rb://283, approved by Marko. ------------------------------------------------------------------------ r6963 | irana | 2010-04-07 19:14:10 +0300 (Wed, 07 Apr 2010) | 15 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Force setting of buf_pool->LRU_old_ratio by calling buf_LRU_old_ratio_update() with adjust set to TRUE. This will make sure that we grab the buf_pool mutex and actually adjust the buf_pool->LRU_old pointer instead of just updating the buf_pool->LRU_old_ratio. Note that after this change there is no call to buf_LRU_old_ratio_update() with adjust set to FALSE and therefore this parameter should be removed. I am keeping it for now to first make sure that the fix does work. Approved by: No one. Sunny agreed with my hypothesis of the problem. ------------------------------------------------------------------------ r6964 | irana | 2010-04-07 19:59:59 +0300 (Wed, 07 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Remove a too strong assertion on behalf of Jimmy. ------------------------------------------------------------------------ r6971 | sbains | 2010-04-09 13:23:33 +0300 (Fri, 09 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When getting the oldest (minimum) LSN value from all the flush lists we need to acquire the flush list mutex. We were incorrectly acquiring the buffer pool mutex. This patch should fix a slew of bugs reported by Michael. ------------------------------------------------------------------------ r6972 | sbains | 2010-04-10 00:25:09 +0300 (Sat, 10 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: We should not reset the lsn to 0 when we encounter an empty flush list. Oldest LSN should be 0 only when all flush lists are empty. e.g., without this fix if even one flush list was empty we would end up breaking WAL. ------------------------------------------------------------------------ r6987 | sbains | 2010-04-14 00:14:13 +0300 (Wed, 14 Apr 2010) | 12 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When calculating the oldest_lsn we can have a situation where we've iterated to say buffer pool 3 and another thread adds two new dirty pages, the first to buffer pool 1 and the second to buffer pool 4. Up to say buffer pool 3 the oldest_lsn was 0. Now, we will end up returning the lsn at buffer pool 4 as the oldest LSN. We prevent this by acquiring the flush order mutex. One other future option is to calculate the min_lsn when flushing pages from the list and maintaining a running total using atomics. That way we can get rid of this function altogether. The atomics will only really be required when we do parallel flushing. ------------------------------------------------------------------------ r6992 | sbains | 2010-04-14 02:45:59 +0300 (Wed, 14 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/include/ut0rbt.h M /branches/innodb+multibp/ut/ut0rbt.c branches/innodb+multibp: Fix copyright of the rbt code. ------------------------------------------------------------------------
2010-04-19 17:44:15 +02:00
/**********************************************************************//**
Remove a node from the red black tree, NOTE: This function will not delete
the node instance, THAT IS THE CALLERS RESPONSIBILITY.
@return the deleted node with the const. */
ib_rbt_node_t*
rbt_remove_node(
/*============*/
ib_rbt_t* tree, /*!< in: rb tree */
const ib_rbt_node_t*
node); /*!< in: node to delete, this
is a fudge and declared const
because the caller has access
only to const nodes.*/
branches/innodb+ Merge r6915:6992 from branches/innodb+multipbp (i.e.: all the changes made since it's creation) This also reverts r6930 to branches/innodb+ because a different solution for that issue is already present in innodb+multibp which is being merged. After this commit branches/innodb+multibp should be discarded and this branch should become our main development tree. ------------------------------------------------------------------------ r6915 | sbains | 2010-03-31 07:33:43 +0300 (Wed, 31 Mar 2010) | 1 line Changed paths: A /branches/innodb+multibp (from /branches/innodb+:6914) Creating a branch for the multiple buffer pool ------------------------------------------------------------------------ r6916 | sbains | 2010-03-31 08:21:00 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/btr/btr0btr.c M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/btr/btr0sea.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/buf/buf0rea.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/handler/i_s.cc M /branches/innodb+multibp/ibuf/ibuf0ibuf.c M /branches/innodb+multibp/include/buf0buddy.h M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/buf0lru.h M /branches/innodb+multibp/include/buf0rea.h M /branches/innodb+multibp/include/buf0types.h M /branches/innodb+multibp/include/ibuf0ibuf.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/univ.i M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mem/mem0mem.c M /branches/innodb+multibp/page/page0zip.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/trx/trx0trx.c M /branches/innodb+multibp/trx/trx0undo.c branches/innodb+multibp: Unable to crash it with UNIV_DEBUG and UNIV_SYNC_DEBUG with both ibtests and Sysbench. The patch now needs a workout from Michael. ------------------------------------------------------------------------ r6917 | sbains | 2010-03-31 08:56:18 +0300 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix error introduced in r6916. ------------------------------------------------------------------------ r6923 | sbains | 2010-03-31 15:16:04 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/page/page0zip.c branches/innodb+multibp: Fix whitespace issues. Add function buf_pool_from_block(). Add some comments to parameters. ------------------------------------------------------------------------ r6932 | sbains | 2010-04-01 01:12:07 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/univ.i branches/innodb+multibp: Remove bogus assertion. It's possible for the space and offset of a page to be undefined during the lifecycle of a page. Remove the debug #defines from univ.i. ------------------------------------------------------------------------ r6933 | sbains | 2010-04-01 01:22:40 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/srv/srv0start.c branches/innodb+multibp: Fix whitespace issues. ------------------------------------------------------------------------ r6934 | sbains | 2010-04-01 01:53:18 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/ChangeLog M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/include/trx0purge.h M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/mysql-test/innodb_bug38231.test A /branches/innodb+multibp/mysql-test/innodb_bug51920.result (from /branches/innodb+/mysql-test/innodb_bug51920.result:6931) A /branches/innodb+multibp/mysql-test/innodb_bug51920.test (from /branches/innodb+/mysql-test/innodb_bug51920.test:6931) M /branches/innodb+multibp/row/row0sel.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/sync/sync0sync.c M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: Merge revisions r6914:6931 from branches/innodb+ ------------------------------------------------------------------------ r6935 | sbains | 2010-04-01 02:08:32 +0300 (Thu, 01 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/mtr/mtr0mtr.c branches/innodb+multibp: Fix the debug assertions for flush order mutex. These were missed in r6934. ------------------------------------------------------------------------ r6936 | sbains | 2010-04-01 02:46:52 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp: Because now we have multiple instances of a mutex at the same level and these mutexes can be acquired simultaneously we can't simply check for <= level. We need to check for <= level - 1. ------------------------------------------------------------------------ r6937 | sbains | 2010-04-01 04:40:17 +0300 (Thu, 01 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: We need to check if the history list len is > than some threshold not that it is evenly divisible by the some batch size. While running tests on dscczz01 I've observed that the purge thread can't keep up with the generation of the UNDO log records because of the faster code. ------------------------------------------------------------------------ r6938 | irana | 2010-04-01 10:15:00 +0300 (Thu, 01 Apr 2010) | 7 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/log0log.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp The buf_flush_order patch that was ported in from 1.1 won't work with multiple buffer pools. This patch moves the mutex protecting order of insertion in the flush list(s) to log_sys struct so that we can have one global mutex protecting insertions into all flush list(s) ------------------------------------------------------------------------ r6941 | sbains | 2010-04-02 00:51:28 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp: We should get the record heap no to check recursively only if we are checking a record lock. Prior to this fix we were doing it for table locks as well, this is a bug. ------------------------------------------------------------------------ r6942 | csun | 2010-04-02 02:39:10 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/ha/ha0ha.c branches/innodb+multibp: fix compiler errors on Windows. Move ut_ad() to after declarations for C file. ------------------------------------------------------------------------ r6943 | sbains | 2010-04-03 05:14:25 +0300 (Sat, 03 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: Remove the code that created the fake buffer pool. ------------------------------------------------------------------------ r6945 | irana | 2010-04-05 23:35:29 +0300 (Mon, 05 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Revert r6941 as it does not resolve the issue and we have to take back the whole fix for bug#49047 ------------------------------------------------------------------------ r6946 | irana | 2010-04-05 23:50:42 +0300 (Mon, 05 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Merged revisions 6932:6944 from branches/innodb+ This solely includes the reversal of fix for bug#49047 ------------------------------------------------------------------------ r6947 | sbains | 2010-04-06 01:33:46 +0300 (Tue, 06 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0lru.c branches/innodb+multibp: Remove the log sys mutex acquisition when doing buffer pool stat aggregation. A dirty read here should suffice. ------------------------------------------------------------------------ r6951 | irana | 2010-04-06 17:25:29 +0300 (Tue, 06 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+mbp Initialize the buf_page_t::buf_pool pointer when the descriptor is allocated using buf_buddy_alloc(). ------------------------------------------------------------------------ r6954 | jyang | 2010-04-06 21:24:46 +0300 (Tue, 06 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix a possible null pointer of index_mapping in a race condition. ------------------------------------------------------------------------ r6958 | sbains | 2010-04-07 00:27:44 +0300 (Wed, 07 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/include/ut0mem.h M /branches/innodb+multibp/ut/ut0mem.c branches/innodb+multibp: Fix part of Bug#52546. We allow ut_free() to accept a NULL pointer and treat it as a nop. ------------------------------------------------------------------------ r6961 | jyang | 2010-04-07 10:50:03 +0300 (Wed, 07 Apr 2010) | 9 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix for bug #52580: Crash in ha_innobase::open on executing INSERT with concurrent ALTER TABLE. Change in MySQL bug #51557 releases the mutex LOCK_open before ha_innobase::open(), causing racing condition for index translation table creation. Fix it by adding dict_sys mutex for the operation. rb://283, approved by Marko. ------------------------------------------------------------------------ r6963 | irana | 2010-04-07 19:14:10 +0300 (Wed, 07 Apr 2010) | 15 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Force setting of buf_pool->LRU_old_ratio by calling buf_LRU_old_ratio_update() with adjust set to TRUE. This will make sure that we grab the buf_pool mutex and actually adjust the buf_pool->LRU_old pointer instead of just updating the buf_pool->LRU_old_ratio. Note that after this change there is no call to buf_LRU_old_ratio_update() with adjust set to FALSE and therefore this parameter should be removed. I am keeping it for now to first make sure that the fix does work. Approved by: No one. Sunny agreed with my hypothesis of the problem. ------------------------------------------------------------------------ r6964 | irana | 2010-04-07 19:59:59 +0300 (Wed, 07 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Remove a too strong assertion on behalf of Jimmy. ------------------------------------------------------------------------ r6971 | sbains | 2010-04-09 13:23:33 +0300 (Fri, 09 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When getting the oldest (minimum) LSN value from all the flush lists we need to acquire the flush list mutex. We were incorrectly acquiring the buffer pool mutex. This patch should fix a slew of bugs reported by Michael. ------------------------------------------------------------------------ r6972 | sbains | 2010-04-10 00:25:09 +0300 (Sat, 10 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: We should not reset the lsn to 0 when we encounter an empty flush list. Oldest LSN should be 0 only when all flush lists are empty. e.g., without this fix if even one flush list was empty we would end up breaking WAL. ------------------------------------------------------------------------ r6987 | sbains | 2010-04-14 00:14:13 +0300 (Wed, 14 Apr 2010) | 12 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When calculating the oldest_lsn we can have a situation where we've iterated to say buffer pool 3 and another thread adds two new dirty pages, the first to buffer pool 1 and the second to buffer pool 4. Up to say buffer pool 3 the oldest_lsn was 0. Now, we will end up returning the lsn at buffer pool 4 as the oldest LSN. We prevent this by acquiring the flush order mutex. One other future option is to calculate the min_lsn when flushing pages from the list and maintaining a running total using atomics. That way we can get rid of this function altogether. The atomics will only really be required when we do parallel flushing. ------------------------------------------------------------------------ r6992 | sbains | 2010-04-14 02:45:59 +0300 (Wed, 14 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/include/ut0rbt.h M /branches/innodb+multibp/ut/ut0rbt.c branches/innodb+multibp: Fix copyright of the rbt code. ------------------------------------------------------------------------
2010-04-19 17:44:15 +02:00
/**********************************************************************//**
Add data to the red black tree, identified by key (no dups yet!)
@return inserted node */
const ib_rbt_node_t*
rbt_insert(
/*=======*/
ib_rbt_t* tree, /*!< in: rb tree */
const void* key, /*!< in: key for ordering */
const void* value); /*!< in: data that will be
copied to the node.*/
branches/innodb+ Merge r6915:6992 from branches/innodb+multipbp (i.e.: all the changes made since it's creation) This also reverts r6930 to branches/innodb+ because a different solution for that issue is already present in innodb+multibp which is being merged. After this commit branches/innodb+multibp should be discarded and this branch should become our main development tree. ------------------------------------------------------------------------ r6915 | sbains | 2010-03-31 07:33:43 +0300 (Wed, 31 Mar 2010) | 1 line Changed paths: A /branches/innodb+multibp (from /branches/innodb+:6914) Creating a branch for the multiple buffer pool ------------------------------------------------------------------------ r6916 | sbains | 2010-03-31 08:21:00 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/btr/btr0btr.c M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/btr/btr0sea.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/buf/buf0rea.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/handler/i_s.cc M /branches/innodb+multibp/ibuf/ibuf0ibuf.c M /branches/innodb+multibp/include/buf0buddy.h M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/buf0lru.h M /branches/innodb+multibp/include/buf0rea.h M /branches/innodb+multibp/include/buf0types.h M /branches/innodb+multibp/include/ibuf0ibuf.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/univ.i M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mem/mem0mem.c M /branches/innodb+multibp/page/page0zip.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/trx/trx0trx.c M /branches/innodb+multibp/trx/trx0undo.c branches/innodb+multibp: Unable to crash it with UNIV_DEBUG and UNIV_SYNC_DEBUG with both ibtests and Sysbench. The patch now needs a workout from Michael. ------------------------------------------------------------------------ r6917 | sbains | 2010-03-31 08:56:18 +0300 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix error introduced in r6916. ------------------------------------------------------------------------ r6923 | sbains | 2010-03-31 15:16:04 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/page/page0zip.c branches/innodb+multibp: Fix whitespace issues. Add function buf_pool_from_block(). Add some comments to parameters. ------------------------------------------------------------------------ r6932 | sbains | 2010-04-01 01:12:07 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/univ.i branches/innodb+multibp: Remove bogus assertion. It's possible for the space and offset of a page to be undefined during the lifecycle of a page. Remove the debug #defines from univ.i. ------------------------------------------------------------------------ r6933 | sbains | 2010-04-01 01:22:40 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/srv/srv0start.c branches/innodb+multibp: Fix whitespace issues. ------------------------------------------------------------------------ r6934 | sbains | 2010-04-01 01:53:18 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/ChangeLog M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/include/trx0purge.h M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/mysql-test/innodb_bug38231.test A /branches/innodb+multibp/mysql-test/innodb_bug51920.result (from /branches/innodb+/mysql-test/innodb_bug51920.result:6931) A /branches/innodb+multibp/mysql-test/innodb_bug51920.test (from /branches/innodb+/mysql-test/innodb_bug51920.test:6931) M /branches/innodb+multibp/row/row0sel.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/sync/sync0sync.c M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: Merge revisions r6914:6931 from branches/innodb+ ------------------------------------------------------------------------ r6935 | sbains | 2010-04-01 02:08:32 +0300 (Thu, 01 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/mtr/mtr0mtr.c branches/innodb+multibp: Fix the debug assertions for flush order mutex. These were missed in r6934. ------------------------------------------------------------------------ r6936 | sbains | 2010-04-01 02:46:52 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp: Because now we have multiple instances of a mutex at the same level and these mutexes can be acquired simultaneously we can't simply check for <= level. We need to check for <= level - 1. ------------------------------------------------------------------------ r6937 | sbains | 2010-04-01 04:40:17 +0300 (Thu, 01 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: We need to check if the history list len is > than some threshold not that it is evenly divisible by the some batch size. While running tests on dscczz01 I've observed that the purge thread can't keep up with the generation of the UNDO log records because of the faster code. ------------------------------------------------------------------------ r6938 | irana | 2010-04-01 10:15:00 +0300 (Thu, 01 Apr 2010) | 7 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/log0log.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp The buf_flush_order patch that was ported in from 1.1 won't work with multiple buffer pools. This patch moves the mutex protecting order of insertion in the flush list(s) to log_sys struct so that we can have one global mutex protecting insertions into all flush list(s) ------------------------------------------------------------------------ r6941 | sbains | 2010-04-02 00:51:28 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp: We should get the record heap no to check recursively only if we are checking a record lock. Prior to this fix we were doing it for table locks as well, this is a bug. ------------------------------------------------------------------------ r6942 | csun | 2010-04-02 02:39:10 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/ha/ha0ha.c branches/innodb+multibp: fix compiler errors on Windows. Move ut_ad() to after declarations for C file. ------------------------------------------------------------------------ r6943 | sbains | 2010-04-03 05:14:25 +0300 (Sat, 03 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: Remove the code that created the fake buffer pool. ------------------------------------------------------------------------ r6945 | irana | 2010-04-05 23:35:29 +0300 (Mon, 05 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Revert r6941 as it does not resolve the issue and we have to take back the whole fix for bug#49047 ------------------------------------------------------------------------ r6946 | irana | 2010-04-05 23:50:42 +0300 (Mon, 05 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Merged revisions 6932:6944 from branches/innodb+ This solely includes the reversal of fix for bug#49047 ------------------------------------------------------------------------ r6947 | sbains | 2010-04-06 01:33:46 +0300 (Tue, 06 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0lru.c branches/innodb+multibp: Remove the log sys mutex acquisition when doing buffer pool stat aggregation. A dirty read here should suffice. ------------------------------------------------------------------------ r6951 | irana | 2010-04-06 17:25:29 +0300 (Tue, 06 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+mbp Initialize the buf_page_t::buf_pool pointer when the descriptor is allocated using buf_buddy_alloc(). ------------------------------------------------------------------------ r6954 | jyang | 2010-04-06 21:24:46 +0300 (Tue, 06 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix a possible null pointer of index_mapping in a race condition. ------------------------------------------------------------------------ r6958 | sbains | 2010-04-07 00:27:44 +0300 (Wed, 07 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/include/ut0mem.h M /branches/innodb+multibp/ut/ut0mem.c branches/innodb+multibp: Fix part of Bug#52546. We allow ut_free() to accept a NULL pointer and treat it as a nop. ------------------------------------------------------------------------ r6961 | jyang | 2010-04-07 10:50:03 +0300 (Wed, 07 Apr 2010) | 9 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix for bug #52580: Crash in ha_innobase::open on executing INSERT with concurrent ALTER TABLE. Change in MySQL bug #51557 releases the mutex LOCK_open before ha_innobase::open(), causing racing condition for index translation table creation. Fix it by adding dict_sys mutex for the operation. rb://283, approved by Marko. ------------------------------------------------------------------------ r6963 | irana | 2010-04-07 19:14:10 +0300 (Wed, 07 Apr 2010) | 15 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Force setting of buf_pool->LRU_old_ratio by calling buf_LRU_old_ratio_update() with adjust set to TRUE. This will make sure that we grab the buf_pool mutex and actually adjust the buf_pool->LRU_old pointer instead of just updating the buf_pool->LRU_old_ratio. Note that after this change there is no call to buf_LRU_old_ratio_update() with adjust set to FALSE and therefore this parameter should be removed. I am keeping it for now to first make sure that the fix does work. Approved by: No one. Sunny agreed with my hypothesis of the problem. ------------------------------------------------------------------------ r6964 | irana | 2010-04-07 19:59:59 +0300 (Wed, 07 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Remove a too strong assertion on behalf of Jimmy. ------------------------------------------------------------------------ r6971 | sbains | 2010-04-09 13:23:33 +0300 (Fri, 09 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When getting the oldest (minimum) LSN value from all the flush lists we need to acquire the flush list mutex. We were incorrectly acquiring the buffer pool mutex. This patch should fix a slew of bugs reported by Michael. ------------------------------------------------------------------------ r6972 | sbains | 2010-04-10 00:25:09 +0300 (Sat, 10 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: We should not reset the lsn to 0 when we encounter an empty flush list. Oldest LSN should be 0 only when all flush lists are empty. e.g., without this fix if even one flush list was empty we would end up breaking WAL. ------------------------------------------------------------------------ r6987 | sbains | 2010-04-14 00:14:13 +0300 (Wed, 14 Apr 2010) | 12 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When calculating the oldest_lsn we can have a situation where we've iterated to say buffer pool 3 and another thread adds two new dirty pages, the first to buffer pool 1 and the second to buffer pool 4. Up to say buffer pool 3 the oldest_lsn was 0. Now, we will end up returning the lsn at buffer pool 4 as the oldest LSN. We prevent this by acquiring the flush order mutex. One other future option is to calculate the min_lsn when flushing pages from the list and maintaining a running total using atomics. That way we can get rid of this function altogether. The atomics will only really be required when we do parallel flushing. ------------------------------------------------------------------------ r6992 | sbains | 2010-04-14 02:45:59 +0300 (Wed, 14 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/include/ut0rbt.h M /branches/innodb+multibp/ut/ut0rbt.c branches/innodb+multibp: Fix copyright of the rbt code. ------------------------------------------------------------------------
2010-04-19 17:44:15 +02:00
/**********************************************************************//**
Add a new node to the tree, useful for data that is pre-sorted.
@return appended node */
const ib_rbt_node_t*
rbt_add_node(
/*=========*/
ib_rbt_t* tree, /*!< in: rb tree */
ib_rbt_bound_t* parent, /*!< in: parent */
const void* value); /*!< in: this value is copied
to the node */
branches/innodb+ Merge r6915:6992 from branches/innodb+multipbp (i.e.: all the changes made since it's creation) This also reverts r6930 to branches/innodb+ because a different solution for that issue is already present in innodb+multibp which is being merged. After this commit branches/innodb+multibp should be discarded and this branch should become our main development tree. ------------------------------------------------------------------------ r6915 | sbains | 2010-03-31 07:33:43 +0300 (Wed, 31 Mar 2010) | 1 line Changed paths: A /branches/innodb+multibp (from /branches/innodb+:6914) Creating a branch for the multiple buffer pool ------------------------------------------------------------------------ r6916 | sbains | 2010-03-31 08:21:00 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/btr/btr0btr.c M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/btr/btr0sea.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/buf/buf0rea.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/handler/i_s.cc M /branches/innodb+multibp/ibuf/ibuf0ibuf.c M /branches/innodb+multibp/include/buf0buddy.h M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/buf0lru.h M /branches/innodb+multibp/include/buf0rea.h M /branches/innodb+multibp/include/buf0types.h M /branches/innodb+multibp/include/ibuf0ibuf.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/univ.i M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mem/mem0mem.c M /branches/innodb+multibp/page/page0zip.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/trx/trx0trx.c M /branches/innodb+multibp/trx/trx0undo.c branches/innodb+multibp: Unable to crash it with UNIV_DEBUG and UNIV_SYNC_DEBUG with both ibtests and Sysbench. The patch now needs a workout from Michael. ------------------------------------------------------------------------ r6917 | sbains | 2010-03-31 08:56:18 +0300 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix error introduced in r6916. ------------------------------------------------------------------------ r6923 | sbains | 2010-03-31 15:16:04 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/page/page0zip.c branches/innodb+multibp: Fix whitespace issues. Add function buf_pool_from_block(). Add some comments to parameters. ------------------------------------------------------------------------ r6932 | sbains | 2010-04-01 01:12:07 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/univ.i branches/innodb+multibp: Remove bogus assertion. It's possible for the space and offset of a page to be undefined during the lifecycle of a page. Remove the debug #defines from univ.i. ------------------------------------------------------------------------ r6933 | sbains | 2010-04-01 01:22:40 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/srv/srv0start.c branches/innodb+multibp: Fix whitespace issues. ------------------------------------------------------------------------ r6934 | sbains | 2010-04-01 01:53:18 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/ChangeLog M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/include/trx0purge.h M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/mysql-test/innodb_bug38231.test A /branches/innodb+multibp/mysql-test/innodb_bug51920.result (from /branches/innodb+/mysql-test/innodb_bug51920.result:6931) A /branches/innodb+multibp/mysql-test/innodb_bug51920.test (from /branches/innodb+/mysql-test/innodb_bug51920.test:6931) M /branches/innodb+multibp/row/row0sel.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/sync/sync0sync.c M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: Merge revisions r6914:6931 from branches/innodb+ ------------------------------------------------------------------------ r6935 | sbains | 2010-04-01 02:08:32 +0300 (Thu, 01 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/mtr/mtr0mtr.c branches/innodb+multibp: Fix the debug assertions for flush order mutex. These were missed in r6934. ------------------------------------------------------------------------ r6936 | sbains | 2010-04-01 02:46:52 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp: Because now we have multiple instances of a mutex at the same level and these mutexes can be acquired simultaneously we can't simply check for <= level. We need to check for <= level - 1. ------------------------------------------------------------------------ r6937 | sbains | 2010-04-01 04:40:17 +0300 (Thu, 01 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: We need to check if the history list len is > than some threshold not that it is evenly divisible by the some batch size. While running tests on dscczz01 I've observed that the purge thread can't keep up with the generation of the UNDO log records because of the faster code. ------------------------------------------------------------------------ r6938 | irana | 2010-04-01 10:15:00 +0300 (Thu, 01 Apr 2010) | 7 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/log0log.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp The buf_flush_order patch that was ported in from 1.1 won't work with multiple buffer pools. This patch moves the mutex protecting order of insertion in the flush list(s) to log_sys struct so that we can have one global mutex protecting insertions into all flush list(s) ------------------------------------------------------------------------ r6941 | sbains | 2010-04-02 00:51:28 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp: We should get the record heap no to check recursively only if we are checking a record lock. Prior to this fix we were doing it for table locks as well, this is a bug. ------------------------------------------------------------------------ r6942 | csun | 2010-04-02 02:39:10 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/ha/ha0ha.c branches/innodb+multibp: fix compiler errors on Windows. Move ut_ad() to after declarations for C file. ------------------------------------------------------------------------ r6943 | sbains | 2010-04-03 05:14:25 +0300 (Sat, 03 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: Remove the code that created the fake buffer pool. ------------------------------------------------------------------------ r6945 | irana | 2010-04-05 23:35:29 +0300 (Mon, 05 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Revert r6941 as it does not resolve the issue and we have to take back the whole fix for bug#49047 ------------------------------------------------------------------------ r6946 | irana | 2010-04-05 23:50:42 +0300 (Mon, 05 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Merged revisions 6932:6944 from branches/innodb+ This solely includes the reversal of fix for bug#49047 ------------------------------------------------------------------------ r6947 | sbains | 2010-04-06 01:33:46 +0300 (Tue, 06 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0lru.c branches/innodb+multibp: Remove the log sys mutex acquisition when doing buffer pool stat aggregation. A dirty read here should suffice. ------------------------------------------------------------------------ r6951 | irana | 2010-04-06 17:25:29 +0300 (Tue, 06 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+mbp Initialize the buf_page_t::buf_pool pointer when the descriptor is allocated using buf_buddy_alloc(). ------------------------------------------------------------------------ r6954 | jyang | 2010-04-06 21:24:46 +0300 (Tue, 06 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix a possible null pointer of index_mapping in a race condition. ------------------------------------------------------------------------ r6958 | sbains | 2010-04-07 00:27:44 +0300 (Wed, 07 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/include/ut0mem.h M /branches/innodb+multibp/ut/ut0mem.c branches/innodb+multibp: Fix part of Bug#52546. We allow ut_free() to accept a NULL pointer and treat it as a nop. ------------------------------------------------------------------------ r6961 | jyang | 2010-04-07 10:50:03 +0300 (Wed, 07 Apr 2010) | 9 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix for bug #52580: Crash in ha_innobase::open on executing INSERT with concurrent ALTER TABLE. Change in MySQL bug #51557 releases the mutex LOCK_open before ha_innobase::open(), causing racing condition for index translation table creation. Fix it by adding dict_sys mutex for the operation. rb://283, approved by Marko. ------------------------------------------------------------------------ r6963 | irana | 2010-04-07 19:14:10 +0300 (Wed, 07 Apr 2010) | 15 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Force setting of buf_pool->LRU_old_ratio by calling buf_LRU_old_ratio_update() with adjust set to TRUE. This will make sure that we grab the buf_pool mutex and actually adjust the buf_pool->LRU_old pointer instead of just updating the buf_pool->LRU_old_ratio. Note that after this change there is no call to buf_LRU_old_ratio_update() with adjust set to FALSE and therefore this parameter should be removed. I am keeping it for now to first make sure that the fix does work. Approved by: No one. Sunny agreed with my hypothesis of the problem. ------------------------------------------------------------------------ r6964 | irana | 2010-04-07 19:59:59 +0300 (Wed, 07 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Remove a too strong assertion on behalf of Jimmy. ------------------------------------------------------------------------ r6971 | sbains | 2010-04-09 13:23:33 +0300 (Fri, 09 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When getting the oldest (minimum) LSN value from all the flush lists we need to acquire the flush list mutex. We were incorrectly acquiring the buffer pool mutex. This patch should fix a slew of bugs reported by Michael. ------------------------------------------------------------------------ r6972 | sbains | 2010-04-10 00:25:09 +0300 (Sat, 10 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: We should not reset the lsn to 0 when we encounter an empty flush list. Oldest LSN should be 0 only when all flush lists are empty. e.g., without this fix if even one flush list was empty we would end up breaking WAL. ------------------------------------------------------------------------ r6987 | sbains | 2010-04-14 00:14:13 +0300 (Wed, 14 Apr 2010) | 12 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When calculating the oldest_lsn we can have a situation where we've iterated to say buffer pool 3 and another thread adds two new dirty pages, the first to buffer pool 1 and the second to buffer pool 4. Up to say buffer pool 3 the oldest_lsn was 0. Now, we will end up returning the lsn at buffer pool 4 as the oldest LSN. We prevent this by acquiring the flush order mutex. One other future option is to calculate the min_lsn when flushing pages from the list and maintaining a running total using atomics. That way we can get rid of this function altogether. The atomics will only really be required when we do parallel flushing. ------------------------------------------------------------------------ r6992 | sbains | 2010-04-14 02:45:59 +0300 (Wed, 14 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/include/ut0rbt.h M /branches/innodb+multibp/ut/ut0rbt.c branches/innodb+multibp: Fix copyright of the rbt code. ------------------------------------------------------------------------
2010-04-19 17:44:15 +02:00
/**********************************************************************//**
Return the left most data node in the tree
@return left most node */
const ib_rbt_node_t*
rbt_first(
/*======*/
const ib_rbt_t* tree); /*!< in: rb tree */
branches/innodb+ Merge r6915:6992 from branches/innodb+multipbp (i.e.: all the changes made since it's creation) This also reverts r6930 to branches/innodb+ because a different solution for that issue is already present in innodb+multibp which is being merged. After this commit branches/innodb+multibp should be discarded and this branch should become our main development tree. ------------------------------------------------------------------------ r6915 | sbains | 2010-03-31 07:33:43 +0300 (Wed, 31 Mar 2010) | 1 line Changed paths: A /branches/innodb+multibp (from /branches/innodb+:6914) Creating a branch for the multiple buffer pool ------------------------------------------------------------------------ r6916 | sbains | 2010-03-31 08:21:00 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/btr/btr0btr.c M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/btr/btr0sea.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/buf/buf0rea.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/handler/i_s.cc M /branches/innodb+multibp/ibuf/ibuf0ibuf.c M /branches/innodb+multibp/include/buf0buddy.h M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/buf0lru.h M /branches/innodb+multibp/include/buf0rea.h M /branches/innodb+multibp/include/buf0types.h M /branches/innodb+multibp/include/ibuf0ibuf.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/univ.i M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mem/mem0mem.c M /branches/innodb+multibp/page/page0zip.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/trx/trx0trx.c M /branches/innodb+multibp/trx/trx0undo.c branches/innodb+multibp: Unable to crash it with UNIV_DEBUG and UNIV_SYNC_DEBUG with both ibtests and Sysbench. The patch now needs a workout from Michael. ------------------------------------------------------------------------ r6917 | sbains | 2010-03-31 08:56:18 +0300 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix error introduced in r6916. ------------------------------------------------------------------------ r6923 | sbains | 2010-03-31 15:16:04 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/page/page0zip.c branches/innodb+multibp: Fix whitespace issues. Add function buf_pool_from_block(). Add some comments to parameters. ------------------------------------------------------------------------ r6932 | sbains | 2010-04-01 01:12:07 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/univ.i branches/innodb+multibp: Remove bogus assertion. It's possible for the space and offset of a page to be undefined during the lifecycle of a page. Remove the debug #defines from univ.i. ------------------------------------------------------------------------ r6933 | sbains | 2010-04-01 01:22:40 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/srv/srv0start.c branches/innodb+multibp: Fix whitespace issues. ------------------------------------------------------------------------ r6934 | sbains | 2010-04-01 01:53:18 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/ChangeLog M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/include/trx0purge.h M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/mysql-test/innodb_bug38231.test A /branches/innodb+multibp/mysql-test/innodb_bug51920.result (from /branches/innodb+/mysql-test/innodb_bug51920.result:6931) A /branches/innodb+multibp/mysql-test/innodb_bug51920.test (from /branches/innodb+/mysql-test/innodb_bug51920.test:6931) M /branches/innodb+multibp/row/row0sel.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/sync/sync0sync.c M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: Merge revisions r6914:6931 from branches/innodb+ ------------------------------------------------------------------------ r6935 | sbains | 2010-04-01 02:08:32 +0300 (Thu, 01 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/mtr/mtr0mtr.c branches/innodb+multibp: Fix the debug assertions for flush order mutex. These were missed in r6934. ------------------------------------------------------------------------ r6936 | sbains | 2010-04-01 02:46:52 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp: Because now we have multiple instances of a mutex at the same level and these mutexes can be acquired simultaneously we can't simply check for <= level. We need to check for <= level - 1. ------------------------------------------------------------------------ r6937 | sbains | 2010-04-01 04:40:17 +0300 (Thu, 01 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: We need to check if the history list len is > than some threshold not that it is evenly divisible by the some batch size. While running tests on dscczz01 I've observed that the purge thread can't keep up with the generation of the UNDO log records because of the faster code. ------------------------------------------------------------------------ r6938 | irana | 2010-04-01 10:15:00 +0300 (Thu, 01 Apr 2010) | 7 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/log0log.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp The buf_flush_order patch that was ported in from 1.1 won't work with multiple buffer pools. This patch moves the mutex protecting order of insertion in the flush list(s) to log_sys struct so that we can have one global mutex protecting insertions into all flush list(s) ------------------------------------------------------------------------ r6941 | sbains | 2010-04-02 00:51:28 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp: We should get the record heap no to check recursively only if we are checking a record lock. Prior to this fix we were doing it for table locks as well, this is a bug. ------------------------------------------------------------------------ r6942 | csun | 2010-04-02 02:39:10 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/ha/ha0ha.c branches/innodb+multibp: fix compiler errors on Windows. Move ut_ad() to after declarations for C file. ------------------------------------------------------------------------ r6943 | sbains | 2010-04-03 05:14:25 +0300 (Sat, 03 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: Remove the code that created the fake buffer pool. ------------------------------------------------------------------------ r6945 | irana | 2010-04-05 23:35:29 +0300 (Mon, 05 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Revert r6941 as it does not resolve the issue and we have to take back the whole fix for bug#49047 ------------------------------------------------------------------------ r6946 | irana | 2010-04-05 23:50:42 +0300 (Mon, 05 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Merged revisions 6932:6944 from branches/innodb+ This solely includes the reversal of fix for bug#49047 ------------------------------------------------------------------------ r6947 | sbains | 2010-04-06 01:33:46 +0300 (Tue, 06 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0lru.c branches/innodb+multibp: Remove the log sys mutex acquisition when doing buffer pool stat aggregation. A dirty read here should suffice. ------------------------------------------------------------------------ r6951 | irana | 2010-04-06 17:25:29 +0300 (Tue, 06 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+mbp Initialize the buf_page_t::buf_pool pointer when the descriptor is allocated using buf_buddy_alloc(). ------------------------------------------------------------------------ r6954 | jyang | 2010-04-06 21:24:46 +0300 (Tue, 06 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix a possible null pointer of index_mapping in a race condition. ------------------------------------------------------------------------ r6958 | sbains | 2010-04-07 00:27:44 +0300 (Wed, 07 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/include/ut0mem.h M /branches/innodb+multibp/ut/ut0mem.c branches/innodb+multibp: Fix part of Bug#52546. We allow ut_free() to accept a NULL pointer and treat it as a nop. ------------------------------------------------------------------------ r6961 | jyang | 2010-04-07 10:50:03 +0300 (Wed, 07 Apr 2010) | 9 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix for bug #52580: Crash in ha_innobase::open on executing INSERT with concurrent ALTER TABLE. Change in MySQL bug #51557 releases the mutex LOCK_open before ha_innobase::open(), causing racing condition for index translation table creation. Fix it by adding dict_sys mutex for the operation. rb://283, approved by Marko. ------------------------------------------------------------------------ r6963 | irana | 2010-04-07 19:14:10 +0300 (Wed, 07 Apr 2010) | 15 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Force setting of buf_pool->LRU_old_ratio by calling buf_LRU_old_ratio_update() with adjust set to TRUE. This will make sure that we grab the buf_pool mutex and actually adjust the buf_pool->LRU_old pointer instead of just updating the buf_pool->LRU_old_ratio. Note that after this change there is no call to buf_LRU_old_ratio_update() with adjust set to FALSE and therefore this parameter should be removed. I am keeping it for now to first make sure that the fix does work. Approved by: No one. Sunny agreed with my hypothesis of the problem. ------------------------------------------------------------------------ r6964 | irana | 2010-04-07 19:59:59 +0300 (Wed, 07 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Remove a too strong assertion on behalf of Jimmy. ------------------------------------------------------------------------ r6971 | sbains | 2010-04-09 13:23:33 +0300 (Fri, 09 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When getting the oldest (minimum) LSN value from all the flush lists we need to acquire the flush list mutex. We were incorrectly acquiring the buffer pool mutex. This patch should fix a slew of bugs reported by Michael. ------------------------------------------------------------------------ r6972 | sbains | 2010-04-10 00:25:09 +0300 (Sat, 10 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: We should not reset the lsn to 0 when we encounter an empty flush list. Oldest LSN should be 0 only when all flush lists are empty. e.g., without this fix if even one flush list was empty we would end up breaking WAL. ------------------------------------------------------------------------ r6987 | sbains | 2010-04-14 00:14:13 +0300 (Wed, 14 Apr 2010) | 12 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When calculating the oldest_lsn we can have a situation where we've iterated to say buffer pool 3 and another thread adds two new dirty pages, the first to buffer pool 1 and the second to buffer pool 4. Up to say buffer pool 3 the oldest_lsn was 0. Now, we will end up returning the lsn at buffer pool 4 as the oldest LSN. We prevent this by acquiring the flush order mutex. One other future option is to calculate the min_lsn when flushing pages from the list and maintaining a running total using atomics. That way we can get rid of this function altogether. The atomics will only really be required when we do parallel flushing. ------------------------------------------------------------------------ r6992 | sbains | 2010-04-14 02:45:59 +0300 (Wed, 14 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/include/ut0rbt.h M /branches/innodb+multibp/ut/ut0rbt.c branches/innodb+multibp: Fix copyright of the rbt code. ------------------------------------------------------------------------
2010-04-19 17:44:15 +02:00
/**********************************************************************//**
Return the right most data node in the tree
@return right most node */
const ib_rbt_node_t*
rbt_last(
/*=====*/
const ib_rbt_t* tree); /*!< in: rb tree */
branches/innodb+ Merge r6915:6992 from branches/innodb+multipbp (i.e.: all the changes made since it's creation) This also reverts r6930 to branches/innodb+ because a different solution for that issue is already present in innodb+multibp which is being merged. After this commit branches/innodb+multibp should be discarded and this branch should become our main development tree. ------------------------------------------------------------------------ r6915 | sbains | 2010-03-31 07:33:43 +0300 (Wed, 31 Mar 2010) | 1 line Changed paths: A /branches/innodb+multibp (from /branches/innodb+:6914) Creating a branch for the multiple buffer pool ------------------------------------------------------------------------ r6916 | sbains | 2010-03-31 08:21:00 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/btr/btr0btr.c M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/btr/btr0sea.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/buf/buf0rea.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/handler/i_s.cc M /branches/innodb+multibp/ibuf/ibuf0ibuf.c M /branches/innodb+multibp/include/buf0buddy.h M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/buf0lru.h M /branches/innodb+multibp/include/buf0rea.h M /branches/innodb+multibp/include/buf0types.h M /branches/innodb+multibp/include/ibuf0ibuf.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/univ.i M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mem/mem0mem.c M /branches/innodb+multibp/page/page0zip.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/trx/trx0trx.c M /branches/innodb+multibp/trx/trx0undo.c branches/innodb+multibp: Unable to crash it with UNIV_DEBUG and UNIV_SYNC_DEBUG with both ibtests and Sysbench. The patch now needs a workout from Michael. ------------------------------------------------------------------------ r6917 | sbains | 2010-03-31 08:56:18 +0300 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix error introduced in r6916. ------------------------------------------------------------------------ r6923 | sbains | 2010-03-31 15:16:04 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/page/page0zip.c branches/innodb+multibp: Fix whitespace issues. Add function buf_pool_from_block(). Add some comments to parameters. ------------------------------------------------------------------------ r6932 | sbains | 2010-04-01 01:12:07 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/univ.i branches/innodb+multibp: Remove bogus assertion. It's possible for the space and offset of a page to be undefined during the lifecycle of a page. Remove the debug #defines from univ.i. ------------------------------------------------------------------------ r6933 | sbains | 2010-04-01 01:22:40 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/srv/srv0start.c branches/innodb+multibp: Fix whitespace issues. ------------------------------------------------------------------------ r6934 | sbains | 2010-04-01 01:53:18 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/ChangeLog M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/include/trx0purge.h M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/mysql-test/innodb_bug38231.test A /branches/innodb+multibp/mysql-test/innodb_bug51920.result (from /branches/innodb+/mysql-test/innodb_bug51920.result:6931) A /branches/innodb+multibp/mysql-test/innodb_bug51920.test (from /branches/innodb+/mysql-test/innodb_bug51920.test:6931) M /branches/innodb+multibp/row/row0sel.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/sync/sync0sync.c M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: Merge revisions r6914:6931 from branches/innodb+ ------------------------------------------------------------------------ r6935 | sbains | 2010-04-01 02:08:32 +0300 (Thu, 01 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/mtr/mtr0mtr.c branches/innodb+multibp: Fix the debug assertions for flush order mutex. These were missed in r6934. ------------------------------------------------------------------------ r6936 | sbains | 2010-04-01 02:46:52 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp: Because now we have multiple instances of a mutex at the same level and these mutexes can be acquired simultaneously we can't simply check for <= level. We need to check for <= level - 1. ------------------------------------------------------------------------ r6937 | sbains | 2010-04-01 04:40:17 +0300 (Thu, 01 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: We need to check if the history list len is > than some threshold not that it is evenly divisible by the some batch size. While running tests on dscczz01 I've observed that the purge thread can't keep up with the generation of the UNDO log records because of the faster code. ------------------------------------------------------------------------ r6938 | irana | 2010-04-01 10:15:00 +0300 (Thu, 01 Apr 2010) | 7 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/log0log.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp The buf_flush_order patch that was ported in from 1.1 won't work with multiple buffer pools. This patch moves the mutex protecting order of insertion in the flush list(s) to log_sys struct so that we can have one global mutex protecting insertions into all flush list(s) ------------------------------------------------------------------------ r6941 | sbains | 2010-04-02 00:51:28 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp: We should get the record heap no to check recursively only if we are checking a record lock. Prior to this fix we were doing it for table locks as well, this is a bug. ------------------------------------------------------------------------ r6942 | csun | 2010-04-02 02:39:10 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/ha/ha0ha.c branches/innodb+multibp: fix compiler errors on Windows. Move ut_ad() to after declarations for C file. ------------------------------------------------------------------------ r6943 | sbains | 2010-04-03 05:14:25 +0300 (Sat, 03 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: Remove the code that created the fake buffer pool. ------------------------------------------------------------------------ r6945 | irana | 2010-04-05 23:35:29 +0300 (Mon, 05 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Revert r6941 as it does not resolve the issue and we have to take back the whole fix for bug#49047 ------------------------------------------------------------------------ r6946 | irana | 2010-04-05 23:50:42 +0300 (Mon, 05 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Merged revisions 6932:6944 from branches/innodb+ This solely includes the reversal of fix for bug#49047 ------------------------------------------------------------------------ r6947 | sbains | 2010-04-06 01:33:46 +0300 (Tue, 06 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0lru.c branches/innodb+multibp: Remove the log sys mutex acquisition when doing buffer pool stat aggregation. A dirty read here should suffice. ------------------------------------------------------------------------ r6951 | irana | 2010-04-06 17:25:29 +0300 (Tue, 06 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+mbp Initialize the buf_page_t::buf_pool pointer when the descriptor is allocated using buf_buddy_alloc(). ------------------------------------------------------------------------ r6954 | jyang | 2010-04-06 21:24:46 +0300 (Tue, 06 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix a possible null pointer of index_mapping in a race condition. ------------------------------------------------------------------------ r6958 | sbains | 2010-04-07 00:27:44 +0300 (Wed, 07 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/include/ut0mem.h M /branches/innodb+multibp/ut/ut0mem.c branches/innodb+multibp: Fix part of Bug#52546. We allow ut_free() to accept a NULL pointer and treat it as a nop. ------------------------------------------------------------------------ r6961 | jyang | 2010-04-07 10:50:03 +0300 (Wed, 07 Apr 2010) | 9 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix for bug #52580: Crash in ha_innobase::open on executing INSERT with concurrent ALTER TABLE. Change in MySQL bug #51557 releases the mutex LOCK_open before ha_innobase::open(), causing racing condition for index translation table creation. Fix it by adding dict_sys mutex for the operation. rb://283, approved by Marko. ------------------------------------------------------------------------ r6963 | irana | 2010-04-07 19:14:10 +0300 (Wed, 07 Apr 2010) | 15 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Force setting of buf_pool->LRU_old_ratio by calling buf_LRU_old_ratio_update() with adjust set to TRUE. This will make sure that we grab the buf_pool mutex and actually adjust the buf_pool->LRU_old pointer instead of just updating the buf_pool->LRU_old_ratio. Note that after this change there is no call to buf_LRU_old_ratio_update() with adjust set to FALSE and therefore this parameter should be removed. I am keeping it for now to first make sure that the fix does work. Approved by: No one. Sunny agreed with my hypothesis of the problem. ------------------------------------------------------------------------ r6964 | irana | 2010-04-07 19:59:59 +0300 (Wed, 07 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Remove a too strong assertion on behalf of Jimmy. ------------------------------------------------------------------------ r6971 | sbains | 2010-04-09 13:23:33 +0300 (Fri, 09 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When getting the oldest (minimum) LSN value from all the flush lists we need to acquire the flush list mutex. We were incorrectly acquiring the buffer pool mutex. This patch should fix a slew of bugs reported by Michael. ------------------------------------------------------------------------ r6972 | sbains | 2010-04-10 00:25:09 +0300 (Sat, 10 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: We should not reset the lsn to 0 when we encounter an empty flush list. Oldest LSN should be 0 only when all flush lists are empty. e.g., without this fix if even one flush list was empty we would end up breaking WAL. ------------------------------------------------------------------------ r6987 | sbains | 2010-04-14 00:14:13 +0300 (Wed, 14 Apr 2010) | 12 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When calculating the oldest_lsn we can have a situation where we've iterated to say buffer pool 3 and another thread adds two new dirty pages, the first to buffer pool 1 and the second to buffer pool 4. Up to say buffer pool 3 the oldest_lsn was 0. Now, we will end up returning the lsn at buffer pool 4 as the oldest LSN. We prevent this by acquiring the flush order mutex. One other future option is to calculate the min_lsn when flushing pages from the list and maintaining a running total using atomics. That way we can get rid of this function altogether. The atomics will only really be required when we do parallel flushing. ------------------------------------------------------------------------ r6992 | sbains | 2010-04-14 02:45:59 +0300 (Wed, 14 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/include/ut0rbt.h M /branches/innodb+multibp/ut/ut0rbt.c branches/innodb+multibp: Fix copyright of the rbt code. ------------------------------------------------------------------------
2010-04-19 17:44:15 +02:00
/**********************************************************************//**
Return the next node from current.
@return successor node to current that is passed in. */
const ib_rbt_node_t*
rbt_next(
/*=====*/
const ib_rbt_t* tree, /*!< in: rb tree */
const ib_rbt_node_t* /* in: current node */
current);
branches/innodb+ Merge r6915:6992 from branches/innodb+multipbp (i.e.: all the changes made since it's creation) This also reverts r6930 to branches/innodb+ because a different solution for that issue is already present in innodb+multibp which is being merged. After this commit branches/innodb+multibp should be discarded and this branch should become our main development tree. ------------------------------------------------------------------------ r6915 | sbains | 2010-03-31 07:33:43 +0300 (Wed, 31 Mar 2010) | 1 line Changed paths: A /branches/innodb+multibp (from /branches/innodb+:6914) Creating a branch for the multiple buffer pool ------------------------------------------------------------------------ r6916 | sbains | 2010-03-31 08:21:00 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/btr/btr0btr.c M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/btr/btr0sea.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/buf/buf0rea.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/handler/i_s.cc M /branches/innodb+multibp/ibuf/ibuf0ibuf.c M /branches/innodb+multibp/include/buf0buddy.h M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/buf0lru.h M /branches/innodb+multibp/include/buf0rea.h M /branches/innodb+multibp/include/buf0types.h M /branches/innodb+multibp/include/ibuf0ibuf.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/univ.i M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mem/mem0mem.c M /branches/innodb+multibp/page/page0zip.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/trx/trx0trx.c M /branches/innodb+multibp/trx/trx0undo.c branches/innodb+multibp: Unable to crash it with UNIV_DEBUG and UNIV_SYNC_DEBUG with both ibtests and Sysbench. The patch now needs a workout from Michael. ------------------------------------------------------------------------ r6917 | sbains | 2010-03-31 08:56:18 +0300 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix error introduced in r6916. ------------------------------------------------------------------------ r6923 | sbains | 2010-03-31 15:16:04 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/page/page0zip.c branches/innodb+multibp: Fix whitespace issues. Add function buf_pool_from_block(). Add some comments to parameters. ------------------------------------------------------------------------ r6932 | sbains | 2010-04-01 01:12:07 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/univ.i branches/innodb+multibp: Remove bogus assertion. It's possible for the space and offset of a page to be undefined during the lifecycle of a page. Remove the debug #defines from univ.i. ------------------------------------------------------------------------ r6933 | sbains | 2010-04-01 01:22:40 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/srv/srv0start.c branches/innodb+multibp: Fix whitespace issues. ------------------------------------------------------------------------ r6934 | sbains | 2010-04-01 01:53:18 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/ChangeLog M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/include/trx0purge.h M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/mysql-test/innodb_bug38231.test A /branches/innodb+multibp/mysql-test/innodb_bug51920.result (from /branches/innodb+/mysql-test/innodb_bug51920.result:6931) A /branches/innodb+multibp/mysql-test/innodb_bug51920.test (from /branches/innodb+/mysql-test/innodb_bug51920.test:6931) M /branches/innodb+multibp/row/row0sel.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/sync/sync0sync.c M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: Merge revisions r6914:6931 from branches/innodb+ ------------------------------------------------------------------------ r6935 | sbains | 2010-04-01 02:08:32 +0300 (Thu, 01 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/mtr/mtr0mtr.c branches/innodb+multibp: Fix the debug assertions for flush order mutex. These were missed in r6934. ------------------------------------------------------------------------ r6936 | sbains | 2010-04-01 02:46:52 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp: Because now we have multiple instances of a mutex at the same level and these mutexes can be acquired simultaneously we can't simply check for <= level. We need to check for <= level - 1. ------------------------------------------------------------------------ r6937 | sbains | 2010-04-01 04:40:17 +0300 (Thu, 01 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: We need to check if the history list len is > than some threshold not that it is evenly divisible by the some batch size. While running tests on dscczz01 I've observed that the purge thread can't keep up with the generation of the UNDO log records because of the faster code. ------------------------------------------------------------------------ r6938 | irana | 2010-04-01 10:15:00 +0300 (Thu, 01 Apr 2010) | 7 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/log0log.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp The buf_flush_order patch that was ported in from 1.1 won't work with multiple buffer pools. This patch moves the mutex protecting order of insertion in the flush list(s) to log_sys struct so that we can have one global mutex protecting insertions into all flush list(s) ------------------------------------------------------------------------ r6941 | sbains | 2010-04-02 00:51:28 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp: We should get the record heap no to check recursively only if we are checking a record lock. Prior to this fix we were doing it for table locks as well, this is a bug. ------------------------------------------------------------------------ r6942 | csun | 2010-04-02 02:39:10 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/ha/ha0ha.c branches/innodb+multibp: fix compiler errors on Windows. Move ut_ad() to after declarations for C file. ------------------------------------------------------------------------ r6943 | sbains | 2010-04-03 05:14:25 +0300 (Sat, 03 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: Remove the code that created the fake buffer pool. ------------------------------------------------------------------------ r6945 | irana | 2010-04-05 23:35:29 +0300 (Mon, 05 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Revert r6941 as it does not resolve the issue and we have to take back the whole fix for bug#49047 ------------------------------------------------------------------------ r6946 | irana | 2010-04-05 23:50:42 +0300 (Mon, 05 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Merged revisions 6932:6944 from branches/innodb+ This solely includes the reversal of fix for bug#49047 ------------------------------------------------------------------------ r6947 | sbains | 2010-04-06 01:33:46 +0300 (Tue, 06 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0lru.c branches/innodb+multibp: Remove the log sys mutex acquisition when doing buffer pool stat aggregation. A dirty read here should suffice. ------------------------------------------------------------------------ r6951 | irana | 2010-04-06 17:25:29 +0300 (Tue, 06 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+mbp Initialize the buf_page_t::buf_pool pointer when the descriptor is allocated using buf_buddy_alloc(). ------------------------------------------------------------------------ r6954 | jyang | 2010-04-06 21:24:46 +0300 (Tue, 06 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix a possible null pointer of index_mapping in a race condition. ------------------------------------------------------------------------ r6958 | sbains | 2010-04-07 00:27:44 +0300 (Wed, 07 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/include/ut0mem.h M /branches/innodb+multibp/ut/ut0mem.c branches/innodb+multibp: Fix part of Bug#52546. We allow ut_free() to accept a NULL pointer and treat it as a nop. ------------------------------------------------------------------------ r6961 | jyang | 2010-04-07 10:50:03 +0300 (Wed, 07 Apr 2010) | 9 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix for bug #52580: Crash in ha_innobase::open on executing INSERT with concurrent ALTER TABLE. Change in MySQL bug #51557 releases the mutex LOCK_open before ha_innobase::open(), causing racing condition for index translation table creation. Fix it by adding dict_sys mutex for the operation. rb://283, approved by Marko. ------------------------------------------------------------------------ r6963 | irana | 2010-04-07 19:14:10 +0300 (Wed, 07 Apr 2010) | 15 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Force setting of buf_pool->LRU_old_ratio by calling buf_LRU_old_ratio_update() with adjust set to TRUE. This will make sure that we grab the buf_pool mutex and actually adjust the buf_pool->LRU_old pointer instead of just updating the buf_pool->LRU_old_ratio. Note that after this change there is no call to buf_LRU_old_ratio_update() with adjust set to FALSE and therefore this parameter should be removed. I am keeping it for now to first make sure that the fix does work. Approved by: No one. Sunny agreed with my hypothesis of the problem. ------------------------------------------------------------------------ r6964 | irana | 2010-04-07 19:59:59 +0300 (Wed, 07 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Remove a too strong assertion on behalf of Jimmy. ------------------------------------------------------------------------ r6971 | sbains | 2010-04-09 13:23:33 +0300 (Fri, 09 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When getting the oldest (minimum) LSN value from all the flush lists we need to acquire the flush list mutex. We were incorrectly acquiring the buffer pool mutex. This patch should fix a slew of bugs reported by Michael. ------------------------------------------------------------------------ r6972 | sbains | 2010-04-10 00:25:09 +0300 (Sat, 10 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: We should not reset the lsn to 0 when we encounter an empty flush list. Oldest LSN should be 0 only when all flush lists are empty. e.g., without this fix if even one flush list was empty we would end up breaking WAL. ------------------------------------------------------------------------ r6987 | sbains | 2010-04-14 00:14:13 +0300 (Wed, 14 Apr 2010) | 12 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When calculating the oldest_lsn we can have a situation where we've iterated to say buffer pool 3 and another thread adds two new dirty pages, the first to buffer pool 1 and the second to buffer pool 4. Up to say buffer pool 3 the oldest_lsn was 0. Now, we will end up returning the lsn at buffer pool 4 as the oldest LSN. We prevent this by acquiring the flush order mutex. One other future option is to calculate the min_lsn when flushing pages from the list and maintaining a running total using atomics. That way we can get rid of this function altogether. The atomics will only really be required when we do parallel flushing. ------------------------------------------------------------------------ r6992 | sbains | 2010-04-14 02:45:59 +0300 (Wed, 14 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/include/ut0rbt.h M /branches/innodb+multibp/ut/ut0rbt.c branches/innodb+multibp: Fix copyright of the rbt code. ------------------------------------------------------------------------
2010-04-19 17:44:15 +02:00
/**********************************************************************//**
Return the prev node from current.
@return precedessor node to current that is passed in */
const ib_rbt_node_t*
rbt_prev(
/*=====*/
const ib_rbt_t* tree, /*!< in: rb tree */
const ib_rbt_node_t* /* in: current node */
current);
branches/innodb+ Merge r6915:6992 from branches/innodb+multipbp (i.e.: all the changes made since it's creation) This also reverts r6930 to branches/innodb+ because a different solution for that issue is already present in innodb+multibp which is being merged. After this commit branches/innodb+multibp should be discarded and this branch should become our main development tree. ------------------------------------------------------------------------ r6915 | sbains | 2010-03-31 07:33:43 +0300 (Wed, 31 Mar 2010) | 1 line Changed paths: A /branches/innodb+multibp (from /branches/innodb+:6914) Creating a branch for the multiple buffer pool ------------------------------------------------------------------------ r6916 | sbains | 2010-03-31 08:21:00 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/btr/btr0btr.c M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/btr/btr0sea.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/buf/buf0rea.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/handler/i_s.cc M /branches/innodb+multibp/ibuf/ibuf0ibuf.c M /branches/innodb+multibp/include/buf0buddy.h M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/buf0lru.h M /branches/innodb+multibp/include/buf0rea.h M /branches/innodb+multibp/include/buf0types.h M /branches/innodb+multibp/include/ibuf0ibuf.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/univ.i M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mem/mem0mem.c M /branches/innodb+multibp/page/page0zip.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/trx/trx0trx.c M /branches/innodb+multibp/trx/trx0undo.c branches/innodb+multibp: Unable to crash it with UNIV_DEBUG and UNIV_SYNC_DEBUG with both ibtests and Sysbench. The patch now needs a workout from Michael. ------------------------------------------------------------------------ r6917 | sbains | 2010-03-31 08:56:18 +0300 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix error introduced in r6916. ------------------------------------------------------------------------ r6923 | sbains | 2010-03-31 15:16:04 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/page/page0zip.c branches/innodb+multibp: Fix whitespace issues. Add function buf_pool_from_block(). Add some comments to parameters. ------------------------------------------------------------------------ r6932 | sbains | 2010-04-01 01:12:07 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/univ.i branches/innodb+multibp: Remove bogus assertion. It's possible for the space and offset of a page to be undefined during the lifecycle of a page. Remove the debug #defines from univ.i. ------------------------------------------------------------------------ r6933 | sbains | 2010-04-01 01:22:40 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/srv/srv0start.c branches/innodb+multibp: Fix whitespace issues. ------------------------------------------------------------------------ r6934 | sbains | 2010-04-01 01:53:18 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/ChangeLog M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/include/trx0purge.h M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/mysql-test/innodb_bug38231.test A /branches/innodb+multibp/mysql-test/innodb_bug51920.result (from /branches/innodb+/mysql-test/innodb_bug51920.result:6931) A /branches/innodb+multibp/mysql-test/innodb_bug51920.test (from /branches/innodb+/mysql-test/innodb_bug51920.test:6931) M /branches/innodb+multibp/row/row0sel.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/sync/sync0sync.c M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: Merge revisions r6914:6931 from branches/innodb+ ------------------------------------------------------------------------ r6935 | sbains | 2010-04-01 02:08:32 +0300 (Thu, 01 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/mtr/mtr0mtr.c branches/innodb+multibp: Fix the debug assertions for flush order mutex. These were missed in r6934. ------------------------------------------------------------------------ r6936 | sbains | 2010-04-01 02:46:52 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp: Because now we have multiple instances of a mutex at the same level and these mutexes can be acquired simultaneously we can't simply check for <= level. We need to check for <= level - 1. ------------------------------------------------------------------------ r6937 | sbains | 2010-04-01 04:40:17 +0300 (Thu, 01 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: We need to check if the history list len is > than some threshold not that it is evenly divisible by the some batch size. While running tests on dscczz01 I've observed that the purge thread can't keep up with the generation of the UNDO log records because of the faster code. ------------------------------------------------------------------------ r6938 | irana | 2010-04-01 10:15:00 +0300 (Thu, 01 Apr 2010) | 7 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/log0log.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp The buf_flush_order patch that was ported in from 1.1 won't work with multiple buffer pools. This patch moves the mutex protecting order of insertion in the flush list(s) to log_sys struct so that we can have one global mutex protecting insertions into all flush list(s) ------------------------------------------------------------------------ r6941 | sbains | 2010-04-02 00:51:28 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp: We should get the record heap no to check recursively only if we are checking a record lock. Prior to this fix we were doing it for table locks as well, this is a bug. ------------------------------------------------------------------------ r6942 | csun | 2010-04-02 02:39:10 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/ha/ha0ha.c branches/innodb+multibp: fix compiler errors on Windows. Move ut_ad() to after declarations for C file. ------------------------------------------------------------------------ r6943 | sbains | 2010-04-03 05:14:25 +0300 (Sat, 03 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: Remove the code that created the fake buffer pool. ------------------------------------------------------------------------ r6945 | irana | 2010-04-05 23:35:29 +0300 (Mon, 05 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Revert r6941 as it does not resolve the issue and we have to take back the whole fix for bug#49047 ------------------------------------------------------------------------ r6946 | irana | 2010-04-05 23:50:42 +0300 (Mon, 05 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Merged revisions 6932:6944 from branches/innodb+ This solely includes the reversal of fix for bug#49047 ------------------------------------------------------------------------ r6947 | sbains | 2010-04-06 01:33:46 +0300 (Tue, 06 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0lru.c branches/innodb+multibp: Remove the log sys mutex acquisition when doing buffer pool stat aggregation. A dirty read here should suffice. ------------------------------------------------------------------------ r6951 | irana | 2010-04-06 17:25:29 +0300 (Tue, 06 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+mbp Initialize the buf_page_t::buf_pool pointer when the descriptor is allocated using buf_buddy_alloc(). ------------------------------------------------------------------------ r6954 | jyang | 2010-04-06 21:24:46 +0300 (Tue, 06 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix a possible null pointer of index_mapping in a race condition. ------------------------------------------------------------------------ r6958 | sbains | 2010-04-07 00:27:44 +0300 (Wed, 07 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/include/ut0mem.h M /branches/innodb+multibp/ut/ut0mem.c branches/innodb+multibp: Fix part of Bug#52546. We allow ut_free() to accept a NULL pointer and treat it as a nop. ------------------------------------------------------------------------ r6961 | jyang | 2010-04-07 10:50:03 +0300 (Wed, 07 Apr 2010) | 9 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix for bug #52580: Crash in ha_innobase::open on executing INSERT with concurrent ALTER TABLE. Change in MySQL bug #51557 releases the mutex LOCK_open before ha_innobase::open(), causing racing condition for index translation table creation. Fix it by adding dict_sys mutex for the operation. rb://283, approved by Marko. ------------------------------------------------------------------------ r6963 | irana | 2010-04-07 19:14:10 +0300 (Wed, 07 Apr 2010) | 15 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Force setting of buf_pool->LRU_old_ratio by calling buf_LRU_old_ratio_update() with adjust set to TRUE. This will make sure that we grab the buf_pool mutex and actually adjust the buf_pool->LRU_old pointer instead of just updating the buf_pool->LRU_old_ratio. Note that after this change there is no call to buf_LRU_old_ratio_update() with adjust set to FALSE and therefore this parameter should be removed. I am keeping it for now to first make sure that the fix does work. Approved by: No one. Sunny agreed with my hypothesis of the problem. ------------------------------------------------------------------------ r6964 | irana | 2010-04-07 19:59:59 +0300 (Wed, 07 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Remove a too strong assertion on behalf of Jimmy. ------------------------------------------------------------------------ r6971 | sbains | 2010-04-09 13:23:33 +0300 (Fri, 09 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When getting the oldest (minimum) LSN value from all the flush lists we need to acquire the flush list mutex. We were incorrectly acquiring the buffer pool mutex. This patch should fix a slew of bugs reported by Michael. ------------------------------------------------------------------------ r6972 | sbains | 2010-04-10 00:25:09 +0300 (Sat, 10 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: We should not reset the lsn to 0 when we encounter an empty flush list. Oldest LSN should be 0 only when all flush lists are empty. e.g., without this fix if even one flush list was empty we would end up breaking WAL. ------------------------------------------------------------------------ r6987 | sbains | 2010-04-14 00:14:13 +0300 (Wed, 14 Apr 2010) | 12 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When calculating the oldest_lsn we can have a situation where we've iterated to say buffer pool 3 and another thread adds two new dirty pages, the first to buffer pool 1 and the second to buffer pool 4. Up to say buffer pool 3 the oldest_lsn was 0. Now, we will end up returning the lsn at buffer pool 4 as the oldest LSN. We prevent this by acquiring the flush order mutex. One other future option is to calculate the min_lsn when flushing pages from the list and maintaining a running total using atomics. That way we can get rid of this function altogether. The atomics will only really be required when we do parallel flushing. ------------------------------------------------------------------------ r6992 | sbains | 2010-04-14 02:45:59 +0300 (Wed, 14 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/include/ut0rbt.h M /branches/innodb+multibp/ut/ut0rbt.c branches/innodb+multibp: Fix copyright of the rbt code. ------------------------------------------------------------------------
2010-04-19 17:44:15 +02:00
/**********************************************************************//**
Search for the key, a node will be retuned in parent.last, whether it
was found or not. If not found then parent.last will contain the
parent node for the possibly new key otherwise the matching node.
@return result of last comparison */
int
rbt_search(
/*=======*/
const ib_rbt_t* tree, /*!< in: rb tree */
ib_rbt_bound_t* parent, /*!< in: search bounds */
const void* key); /*!< in: key to search */
branches/innodb+ Merge r6915:6992 from branches/innodb+multipbp (i.e.: all the changes made since it's creation) This also reverts r6930 to branches/innodb+ because a different solution for that issue is already present in innodb+multibp which is being merged. After this commit branches/innodb+multibp should be discarded and this branch should become our main development tree. ------------------------------------------------------------------------ r6915 | sbains | 2010-03-31 07:33:43 +0300 (Wed, 31 Mar 2010) | 1 line Changed paths: A /branches/innodb+multibp (from /branches/innodb+:6914) Creating a branch for the multiple buffer pool ------------------------------------------------------------------------ r6916 | sbains | 2010-03-31 08:21:00 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/btr/btr0btr.c M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/btr/btr0sea.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/buf/buf0rea.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/handler/i_s.cc M /branches/innodb+multibp/ibuf/ibuf0ibuf.c M /branches/innodb+multibp/include/buf0buddy.h M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/buf0lru.h M /branches/innodb+multibp/include/buf0rea.h M /branches/innodb+multibp/include/buf0types.h M /branches/innodb+multibp/include/ibuf0ibuf.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/univ.i M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mem/mem0mem.c M /branches/innodb+multibp/page/page0zip.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/trx/trx0trx.c M /branches/innodb+multibp/trx/trx0undo.c branches/innodb+multibp: Unable to crash it with UNIV_DEBUG and UNIV_SYNC_DEBUG with both ibtests and Sysbench. The patch now needs a workout from Michael. ------------------------------------------------------------------------ r6917 | sbains | 2010-03-31 08:56:18 +0300 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix error introduced in r6916. ------------------------------------------------------------------------ r6923 | sbains | 2010-03-31 15:16:04 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/page/page0zip.c branches/innodb+multibp: Fix whitespace issues. Add function buf_pool_from_block(). Add some comments to parameters. ------------------------------------------------------------------------ r6932 | sbains | 2010-04-01 01:12:07 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/univ.i branches/innodb+multibp: Remove bogus assertion. It's possible for the space and offset of a page to be undefined during the lifecycle of a page. Remove the debug #defines from univ.i. ------------------------------------------------------------------------ r6933 | sbains | 2010-04-01 01:22:40 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/srv/srv0start.c branches/innodb+multibp: Fix whitespace issues. ------------------------------------------------------------------------ r6934 | sbains | 2010-04-01 01:53:18 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/ChangeLog M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/include/trx0purge.h M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/mysql-test/innodb_bug38231.test A /branches/innodb+multibp/mysql-test/innodb_bug51920.result (from /branches/innodb+/mysql-test/innodb_bug51920.result:6931) A /branches/innodb+multibp/mysql-test/innodb_bug51920.test (from /branches/innodb+/mysql-test/innodb_bug51920.test:6931) M /branches/innodb+multibp/row/row0sel.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/sync/sync0sync.c M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: Merge revisions r6914:6931 from branches/innodb+ ------------------------------------------------------------------------ r6935 | sbains | 2010-04-01 02:08:32 +0300 (Thu, 01 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/mtr/mtr0mtr.c branches/innodb+multibp: Fix the debug assertions for flush order mutex. These were missed in r6934. ------------------------------------------------------------------------ r6936 | sbains | 2010-04-01 02:46:52 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp: Because now we have multiple instances of a mutex at the same level and these mutexes can be acquired simultaneously we can't simply check for <= level. We need to check for <= level - 1. ------------------------------------------------------------------------ r6937 | sbains | 2010-04-01 04:40:17 +0300 (Thu, 01 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: We need to check if the history list len is > than some threshold not that it is evenly divisible by the some batch size. While running tests on dscczz01 I've observed that the purge thread can't keep up with the generation of the UNDO log records because of the faster code. ------------------------------------------------------------------------ r6938 | irana | 2010-04-01 10:15:00 +0300 (Thu, 01 Apr 2010) | 7 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/log0log.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp The buf_flush_order patch that was ported in from 1.1 won't work with multiple buffer pools. This patch moves the mutex protecting order of insertion in the flush list(s) to log_sys struct so that we can have one global mutex protecting insertions into all flush list(s) ------------------------------------------------------------------------ r6941 | sbains | 2010-04-02 00:51:28 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp: We should get the record heap no to check recursively only if we are checking a record lock. Prior to this fix we were doing it for table locks as well, this is a bug. ------------------------------------------------------------------------ r6942 | csun | 2010-04-02 02:39:10 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/ha/ha0ha.c branches/innodb+multibp: fix compiler errors on Windows. Move ut_ad() to after declarations for C file. ------------------------------------------------------------------------ r6943 | sbains | 2010-04-03 05:14:25 +0300 (Sat, 03 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: Remove the code that created the fake buffer pool. ------------------------------------------------------------------------ r6945 | irana | 2010-04-05 23:35:29 +0300 (Mon, 05 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Revert r6941 as it does not resolve the issue and we have to take back the whole fix for bug#49047 ------------------------------------------------------------------------ r6946 | irana | 2010-04-05 23:50:42 +0300 (Mon, 05 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Merged revisions 6932:6944 from branches/innodb+ This solely includes the reversal of fix for bug#49047 ------------------------------------------------------------------------ r6947 | sbains | 2010-04-06 01:33:46 +0300 (Tue, 06 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0lru.c branches/innodb+multibp: Remove the log sys mutex acquisition when doing buffer pool stat aggregation. A dirty read here should suffice. ------------------------------------------------------------------------ r6951 | irana | 2010-04-06 17:25:29 +0300 (Tue, 06 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+mbp Initialize the buf_page_t::buf_pool pointer when the descriptor is allocated using buf_buddy_alloc(). ------------------------------------------------------------------------ r6954 | jyang | 2010-04-06 21:24:46 +0300 (Tue, 06 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix a possible null pointer of index_mapping in a race condition. ------------------------------------------------------------------------ r6958 | sbains | 2010-04-07 00:27:44 +0300 (Wed, 07 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/include/ut0mem.h M /branches/innodb+multibp/ut/ut0mem.c branches/innodb+multibp: Fix part of Bug#52546. We allow ut_free() to accept a NULL pointer and treat it as a nop. ------------------------------------------------------------------------ r6961 | jyang | 2010-04-07 10:50:03 +0300 (Wed, 07 Apr 2010) | 9 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix for bug #52580: Crash in ha_innobase::open on executing INSERT with concurrent ALTER TABLE. Change in MySQL bug #51557 releases the mutex LOCK_open before ha_innobase::open(), causing racing condition for index translation table creation. Fix it by adding dict_sys mutex for the operation. rb://283, approved by Marko. ------------------------------------------------------------------------ r6963 | irana | 2010-04-07 19:14:10 +0300 (Wed, 07 Apr 2010) | 15 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Force setting of buf_pool->LRU_old_ratio by calling buf_LRU_old_ratio_update() with adjust set to TRUE. This will make sure that we grab the buf_pool mutex and actually adjust the buf_pool->LRU_old pointer instead of just updating the buf_pool->LRU_old_ratio. Note that after this change there is no call to buf_LRU_old_ratio_update() with adjust set to FALSE and therefore this parameter should be removed. I am keeping it for now to first make sure that the fix does work. Approved by: No one. Sunny agreed with my hypothesis of the problem. ------------------------------------------------------------------------ r6964 | irana | 2010-04-07 19:59:59 +0300 (Wed, 07 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Remove a too strong assertion on behalf of Jimmy. ------------------------------------------------------------------------ r6971 | sbains | 2010-04-09 13:23:33 +0300 (Fri, 09 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When getting the oldest (minimum) LSN value from all the flush lists we need to acquire the flush list mutex. We were incorrectly acquiring the buffer pool mutex. This patch should fix a slew of bugs reported by Michael. ------------------------------------------------------------------------ r6972 | sbains | 2010-04-10 00:25:09 +0300 (Sat, 10 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: We should not reset the lsn to 0 when we encounter an empty flush list. Oldest LSN should be 0 only when all flush lists are empty. e.g., without this fix if even one flush list was empty we would end up breaking WAL. ------------------------------------------------------------------------ r6987 | sbains | 2010-04-14 00:14:13 +0300 (Wed, 14 Apr 2010) | 12 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When calculating the oldest_lsn we can have a situation where we've iterated to say buffer pool 3 and another thread adds two new dirty pages, the first to buffer pool 1 and the second to buffer pool 4. Up to say buffer pool 3 the oldest_lsn was 0. Now, we will end up returning the lsn at buffer pool 4 as the oldest LSN. We prevent this by acquiring the flush order mutex. One other future option is to calculate the min_lsn when flushing pages from the list and maintaining a running total using atomics. That way we can get rid of this function altogether. The atomics will only really be required when we do parallel flushing. ------------------------------------------------------------------------ r6992 | sbains | 2010-04-14 02:45:59 +0300 (Wed, 14 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/include/ut0rbt.h M /branches/innodb+multibp/ut/ut0rbt.c branches/innodb+multibp: Fix copyright of the rbt code. ------------------------------------------------------------------------
2010-04-19 17:44:15 +02:00
/**********************************************************************//**
Search for the key, a node will be retuned in parent.last, whether it
was found or not. If not found then parent.last will contain the
parent node for the possibly new key otherwise the matching node.
@return result of last comparison */
int
rbt_search_cmp(
/*===========*/
const ib_rbt_t* tree, /*!< in: rb tree */
ib_rbt_bound_t* parent, /*!< in: search bounds */
const void* key, /*!< in: key to search */
ib_rbt_compare compare, /*!< in: comparator */
ib_rbt_arg_compare
arg_compare); /*!< in: fn to compare items
with argument */
branches/innodb+ Merge r6915:6992 from branches/innodb+multipbp (i.e.: all the changes made since it's creation) This also reverts r6930 to branches/innodb+ because a different solution for that issue is already present in innodb+multibp which is being merged. After this commit branches/innodb+multibp should be discarded and this branch should become our main development tree. ------------------------------------------------------------------------ r6915 | sbains | 2010-03-31 07:33:43 +0300 (Wed, 31 Mar 2010) | 1 line Changed paths: A /branches/innodb+multibp (from /branches/innodb+:6914) Creating a branch for the multiple buffer pool ------------------------------------------------------------------------ r6916 | sbains | 2010-03-31 08:21:00 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/btr/btr0btr.c M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/btr/btr0sea.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/buf/buf0rea.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/handler/i_s.cc M /branches/innodb+multibp/ibuf/ibuf0ibuf.c M /branches/innodb+multibp/include/buf0buddy.h M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/buf0lru.h M /branches/innodb+multibp/include/buf0rea.h M /branches/innodb+multibp/include/buf0types.h M /branches/innodb+multibp/include/ibuf0ibuf.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/univ.i M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mem/mem0mem.c M /branches/innodb+multibp/page/page0zip.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/trx/trx0trx.c M /branches/innodb+multibp/trx/trx0undo.c branches/innodb+multibp: Unable to crash it with UNIV_DEBUG and UNIV_SYNC_DEBUG with both ibtests and Sysbench. The patch now needs a workout from Michael. ------------------------------------------------------------------------ r6917 | sbains | 2010-03-31 08:56:18 +0300 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix error introduced in r6916. ------------------------------------------------------------------------ r6923 | sbains | 2010-03-31 15:16:04 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/page/page0zip.c branches/innodb+multibp: Fix whitespace issues. Add function buf_pool_from_block(). Add some comments to parameters. ------------------------------------------------------------------------ r6932 | sbains | 2010-04-01 01:12:07 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/univ.i branches/innodb+multibp: Remove bogus assertion. It's possible for the space and offset of a page to be undefined during the lifecycle of a page. Remove the debug #defines from univ.i. ------------------------------------------------------------------------ r6933 | sbains | 2010-04-01 01:22:40 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/srv/srv0start.c branches/innodb+multibp: Fix whitespace issues. ------------------------------------------------------------------------ r6934 | sbains | 2010-04-01 01:53:18 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/ChangeLog M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/include/trx0purge.h M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/mysql-test/innodb_bug38231.test A /branches/innodb+multibp/mysql-test/innodb_bug51920.result (from /branches/innodb+/mysql-test/innodb_bug51920.result:6931) A /branches/innodb+multibp/mysql-test/innodb_bug51920.test (from /branches/innodb+/mysql-test/innodb_bug51920.test:6931) M /branches/innodb+multibp/row/row0sel.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/sync/sync0sync.c M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: Merge revisions r6914:6931 from branches/innodb+ ------------------------------------------------------------------------ r6935 | sbains | 2010-04-01 02:08:32 +0300 (Thu, 01 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/mtr/mtr0mtr.c branches/innodb+multibp: Fix the debug assertions for flush order mutex. These were missed in r6934. ------------------------------------------------------------------------ r6936 | sbains | 2010-04-01 02:46:52 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp: Because now we have multiple instances of a mutex at the same level and these mutexes can be acquired simultaneously we can't simply check for <= level. We need to check for <= level - 1. ------------------------------------------------------------------------ r6937 | sbains | 2010-04-01 04:40:17 +0300 (Thu, 01 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: We need to check if the history list len is > than some threshold not that it is evenly divisible by the some batch size. While running tests on dscczz01 I've observed that the purge thread can't keep up with the generation of the UNDO log records because of the faster code. ------------------------------------------------------------------------ r6938 | irana | 2010-04-01 10:15:00 +0300 (Thu, 01 Apr 2010) | 7 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/log0log.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp The buf_flush_order patch that was ported in from 1.1 won't work with multiple buffer pools. This patch moves the mutex protecting order of insertion in the flush list(s) to log_sys struct so that we can have one global mutex protecting insertions into all flush list(s) ------------------------------------------------------------------------ r6941 | sbains | 2010-04-02 00:51:28 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp: We should get the record heap no to check recursively only if we are checking a record lock. Prior to this fix we were doing it for table locks as well, this is a bug. ------------------------------------------------------------------------ r6942 | csun | 2010-04-02 02:39:10 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/ha/ha0ha.c branches/innodb+multibp: fix compiler errors on Windows. Move ut_ad() to after declarations for C file. ------------------------------------------------------------------------ r6943 | sbains | 2010-04-03 05:14:25 +0300 (Sat, 03 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: Remove the code that created the fake buffer pool. ------------------------------------------------------------------------ r6945 | irana | 2010-04-05 23:35:29 +0300 (Mon, 05 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Revert r6941 as it does not resolve the issue and we have to take back the whole fix for bug#49047 ------------------------------------------------------------------------ r6946 | irana | 2010-04-05 23:50:42 +0300 (Mon, 05 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Merged revisions 6932:6944 from branches/innodb+ This solely includes the reversal of fix for bug#49047 ------------------------------------------------------------------------ r6947 | sbains | 2010-04-06 01:33:46 +0300 (Tue, 06 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0lru.c branches/innodb+multibp: Remove the log sys mutex acquisition when doing buffer pool stat aggregation. A dirty read here should suffice. ------------------------------------------------------------------------ r6951 | irana | 2010-04-06 17:25:29 +0300 (Tue, 06 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+mbp Initialize the buf_page_t::buf_pool pointer when the descriptor is allocated using buf_buddy_alloc(). ------------------------------------------------------------------------ r6954 | jyang | 2010-04-06 21:24:46 +0300 (Tue, 06 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix a possible null pointer of index_mapping in a race condition. ------------------------------------------------------------------------ r6958 | sbains | 2010-04-07 00:27:44 +0300 (Wed, 07 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/include/ut0mem.h M /branches/innodb+multibp/ut/ut0mem.c branches/innodb+multibp: Fix part of Bug#52546. We allow ut_free() to accept a NULL pointer and treat it as a nop. ------------------------------------------------------------------------ r6961 | jyang | 2010-04-07 10:50:03 +0300 (Wed, 07 Apr 2010) | 9 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix for bug #52580: Crash in ha_innobase::open on executing INSERT with concurrent ALTER TABLE. Change in MySQL bug #51557 releases the mutex LOCK_open before ha_innobase::open(), causing racing condition for index translation table creation. Fix it by adding dict_sys mutex for the operation. rb://283, approved by Marko. ------------------------------------------------------------------------ r6963 | irana | 2010-04-07 19:14:10 +0300 (Wed, 07 Apr 2010) | 15 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Force setting of buf_pool->LRU_old_ratio by calling buf_LRU_old_ratio_update() with adjust set to TRUE. This will make sure that we grab the buf_pool mutex and actually adjust the buf_pool->LRU_old pointer instead of just updating the buf_pool->LRU_old_ratio. Note that after this change there is no call to buf_LRU_old_ratio_update() with adjust set to FALSE and therefore this parameter should be removed. I am keeping it for now to first make sure that the fix does work. Approved by: No one. Sunny agreed with my hypothesis of the problem. ------------------------------------------------------------------------ r6964 | irana | 2010-04-07 19:59:59 +0300 (Wed, 07 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Remove a too strong assertion on behalf of Jimmy. ------------------------------------------------------------------------ r6971 | sbains | 2010-04-09 13:23:33 +0300 (Fri, 09 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When getting the oldest (minimum) LSN value from all the flush lists we need to acquire the flush list mutex. We were incorrectly acquiring the buffer pool mutex. This patch should fix a slew of bugs reported by Michael. ------------------------------------------------------------------------ r6972 | sbains | 2010-04-10 00:25:09 +0300 (Sat, 10 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: We should not reset the lsn to 0 when we encounter an empty flush list. Oldest LSN should be 0 only when all flush lists are empty. e.g., without this fix if even one flush list was empty we would end up breaking WAL. ------------------------------------------------------------------------ r6987 | sbains | 2010-04-14 00:14:13 +0300 (Wed, 14 Apr 2010) | 12 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When calculating the oldest_lsn we can have a situation where we've iterated to say buffer pool 3 and another thread adds two new dirty pages, the first to buffer pool 1 and the second to buffer pool 4. Up to say buffer pool 3 the oldest_lsn was 0. Now, we will end up returning the lsn at buffer pool 4 as the oldest LSN. We prevent this by acquiring the flush order mutex. One other future option is to calculate the min_lsn when flushing pages from the list and maintaining a running total using atomics. That way we can get rid of this function altogether. The atomics will only really be required when we do parallel flushing. ------------------------------------------------------------------------ r6992 | sbains | 2010-04-14 02:45:59 +0300 (Wed, 14 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/include/ut0rbt.h M /branches/innodb+multibp/ut/ut0rbt.c branches/innodb+multibp: Fix copyright of the rbt code. ------------------------------------------------------------------------
2010-04-19 17:44:15 +02:00
/**********************************************************************//**
Merge the node from dst into src. Return the number of nodes merged.
@return no. of recs merged */
ulint
rbt_merge_uniq(
/*===========*/
ib_rbt_t* dst, /*!< in: dst rb tree */
const ib_rbt_t* src); /*!< in: src rb tree */
#if defined UNIV_DEBUG || defined IB_RBT_TESTING
branches/innodb+ Merge r6915:6992 from branches/innodb+multipbp (i.e.: all the changes made since it's creation) This also reverts r6930 to branches/innodb+ because a different solution for that issue is already present in innodb+multibp which is being merged. After this commit branches/innodb+multibp should be discarded and this branch should become our main development tree. ------------------------------------------------------------------------ r6915 | sbains | 2010-03-31 07:33:43 +0300 (Wed, 31 Mar 2010) | 1 line Changed paths: A /branches/innodb+multibp (from /branches/innodb+:6914) Creating a branch for the multiple buffer pool ------------------------------------------------------------------------ r6916 | sbains | 2010-03-31 08:21:00 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/btr/btr0btr.c M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/btr/btr0sea.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/buf/buf0rea.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/handler/i_s.cc M /branches/innodb+multibp/ibuf/ibuf0ibuf.c M /branches/innodb+multibp/include/buf0buddy.h M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/buf0lru.h M /branches/innodb+multibp/include/buf0rea.h M /branches/innodb+multibp/include/buf0types.h M /branches/innodb+multibp/include/ibuf0ibuf.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/univ.i M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mem/mem0mem.c M /branches/innodb+multibp/page/page0zip.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/trx/trx0trx.c M /branches/innodb+multibp/trx/trx0undo.c branches/innodb+multibp: Unable to crash it with UNIV_DEBUG and UNIV_SYNC_DEBUG with both ibtests and Sysbench. The patch now needs a workout from Michael. ------------------------------------------------------------------------ r6917 | sbains | 2010-03-31 08:56:18 +0300 (Wed, 31 Mar 2010) | 2 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix error introduced in r6916. ------------------------------------------------------------------------ r6923 | sbains | 2010-03-31 15:16:04 +0300 (Wed, 31 Mar 2010) | 3 lines Changed paths: M /branches/innodb+multibp/btr/btr0cur.c M /branches/innodb+multibp/buf/buf0buddy.c M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/buf/buf0lru.c M /branches/innodb+multibp/include/buf0buddy.ic M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/page/page0zip.c branches/innodb+multibp: Fix whitespace issues. Add function buf_pool_from_block(). Add some comments to parameters. ------------------------------------------------------------------------ r6932 | sbains | 2010-04-01 01:12:07 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/univ.i branches/innodb+multibp: Remove bogus assertion. It's possible for the space and offset of a page to be undefined during the lifecycle of a page. Remove the debug #defines from univ.i. ------------------------------------------------------------------------ r6933 | sbains | 2010-04-01 01:22:40 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/srv/srv0start.c branches/innodb+multibp: Fix whitespace issues. ------------------------------------------------------------------------ r6934 | sbains | 2010-04-01 01:53:18 +0300 (Thu, 01 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/CMakeLists.txt M /branches/innodb+multibp/ChangeLog M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/handler/ha_innodb.cc M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/srv0srv.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/include/trx0purge.h M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/mysql-test/innodb_bug38231.test A /branches/innodb+multibp/mysql-test/innodb_bug51920.result (from /branches/innodb+/mysql-test/innodb_bug51920.result:6931) A /branches/innodb+multibp/mysql-test/innodb_bug51920.test (from /branches/innodb+/mysql-test/innodb_bug51920.test:6931) M /branches/innodb+multibp/row/row0sel.c M /branches/innodb+multibp/srv/srv0srv.c M /branches/innodb+multibp/srv/srv0start.c M /branches/innodb+multibp/sync/sync0sync.c M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: Merge revisions r6914:6931 from branches/innodb+ ------------------------------------------------------------------------ r6935 | sbains | 2010-04-01 02:08:32 +0300 (Thu, 01 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/mtr/mtr0mtr.c branches/innodb+multibp: Fix the debug assertions for flush order mutex. These were missed in r6934. ------------------------------------------------------------------------ r6936 | sbains | 2010-04-01 02:46:52 +0300 (Thu, 01 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp: Because now we have multiple instances of a mutex at the same level and these mutexes can be acquired simultaneously we can't simply check for <= level. We need to check for <= level - 1. ------------------------------------------------------------------------ r6937 | sbains | 2010-04-01 04:40:17 +0300 (Thu, 01 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/trx/trx0purge.c branches/innodb+multibp: We need to check if the history list len is > than some threshold not that it is evenly divisible by the some batch size. While running tests on dscczz01 I've observed that the purge thread can't keep up with the generation of the UNDO log records because of the faster code. ------------------------------------------------------------------------ r6938 | irana | 2010-04-01 10:15:00 +0300 (Thu, 01 Apr 2010) | 7 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c M /branches/innodb+multibp/buf/buf0flu.c M /branches/innodb+multibp/include/buf0buf.h M /branches/innodb+multibp/include/buf0buf.ic M /branches/innodb+multibp/include/buf0flu.h M /branches/innodb+multibp/include/buf0flu.ic M /branches/innodb+multibp/include/log0log.h M /branches/innodb+multibp/include/sync0sync.h M /branches/innodb+multibp/log/log0log.c M /branches/innodb+multibp/log/log0recv.c M /branches/innodb+multibp/mtr/mtr0mtr.c M /branches/innodb+multibp/sync/sync0sync.c branches/innodb+multibp The buf_flush_order patch that was ported in from 1.1 won't work with multiple buffer pools. This patch moves the mutex protecting order of insertion in the flush list(s) to log_sys struct so that we can have one global mutex protecting insertions into all flush list(s) ------------------------------------------------------------------------ r6941 | sbains | 2010-04-02 00:51:28 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp: We should get the record heap no to check recursively only if we are checking a record lock. Prior to this fix we were doing it for table locks as well, this is a bug. ------------------------------------------------------------------------ r6942 | csun | 2010-04-02 02:39:10 +0300 (Fri, 02 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/ha/ha0ha.c branches/innodb+multibp: fix compiler errors on Windows. Move ut_ad() to after declarations for C file. ------------------------------------------------------------------------ r6943 | sbains | 2010-04-03 05:14:25 +0300 (Sat, 03 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: Remove the code that created the fake buffer pool. ------------------------------------------------------------------------ r6945 | irana | 2010-04-05 23:35:29 +0300 (Mon, 05 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Revert r6941 as it does not resolve the issue and we have to take back the whole fix for bug#49047 ------------------------------------------------------------------------ r6946 | irana | 2010-04-05 23:50:42 +0300 (Mon, 05 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/include/ut0ut.h M /branches/innodb+multibp/include/ut0ut.ic M /branches/innodb+multibp/lock/lock0lock.c branches/innodb+multibp Merged revisions 6932:6944 from branches/innodb+ This solely includes the reversal of fix for bug#49047 ------------------------------------------------------------------------ r6947 | sbains | 2010-04-06 01:33:46 +0300 (Tue, 06 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/buf/buf0lru.c branches/innodb+multibp: Remove the log sys mutex acquisition when doing buffer pool stat aggregation. A dirty read here should suffice. ------------------------------------------------------------------------ r6951 | irana | 2010-04-06 17:25:29 +0300 (Tue, 06 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+mbp Initialize the buf_page_t::buf_pool pointer when the descriptor is allocated using buf_buddy_alloc(). ------------------------------------------------------------------------ r6954 | jyang | 2010-04-06 21:24:46 +0300 (Tue, 06 Apr 2010) | 4 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix a possible null pointer of index_mapping in a race condition. ------------------------------------------------------------------------ r6958 | sbains | 2010-04-07 00:27:44 +0300 (Wed, 07 Apr 2010) | 3 lines Changed paths: M /branches/innodb+multibp/include/ut0mem.h M /branches/innodb+multibp/ut/ut0mem.c branches/innodb+multibp: Fix part of Bug#52546. We allow ut_free() to accept a NULL pointer and treat it as a nop. ------------------------------------------------------------------------ r6961 | jyang | 2010-04-07 10:50:03 +0300 (Wed, 07 Apr 2010) | 9 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp: Fix for bug #52580: Crash in ha_innobase::open on executing INSERT with concurrent ALTER TABLE. Change in MySQL bug #51557 releases the mutex LOCK_open before ha_innobase::open(), causing racing condition for index translation table creation. Fix it by adding dict_sys mutex for the operation. rb://283, approved by Marko. ------------------------------------------------------------------------ r6963 | irana | 2010-04-07 19:14:10 +0300 (Wed, 07 Apr 2010) | 15 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Force setting of buf_pool->LRU_old_ratio by calling buf_LRU_old_ratio_update() with adjust set to TRUE. This will make sure that we grab the buf_pool mutex and actually adjust the buf_pool->LRU_old pointer instead of just updating the buf_pool->LRU_old_ratio. Note that after this change there is no call to buf_LRU_old_ratio_update() with adjust set to FALSE and therefore this parameter should be removed. I am keeping it for now to first make sure that the fix does work. Approved by: No one. Sunny agreed with my hypothesis of the problem. ------------------------------------------------------------------------ r6964 | irana | 2010-04-07 19:59:59 +0300 (Wed, 07 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/handler/ha_innodb.cc branches/innodb+multibp Remove a too strong assertion on behalf of Jimmy. ------------------------------------------------------------------------ r6971 | sbains | 2010-04-09 13:23:33 +0300 (Fri, 09 Apr 2010) | 6 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When getting the oldest (minimum) LSN value from all the flush lists we need to acquire the flush list mutex. We were incorrectly acquiring the buffer pool mutex. This patch should fix a slew of bugs reported by Michael. ------------------------------------------------------------------------ r6972 | sbains | 2010-04-10 00:25:09 +0300 (Sat, 10 Apr 2010) | 5 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: We should not reset the lsn to 0 when we encounter an empty flush list. Oldest LSN should be 0 only when all flush lists are empty. e.g., without this fix if even one flush list was empty we would end up breaking WAL. ------------------------------------------------------------------------ r6987 | sbains | 2010-04-14 00:14:13 +0300 (Wed, 14 Apr 2010) | 12 lines Changed paths: M /branches/innodb+multibp/buf/buf0buf.c branches/innodb+multibp: When calculating the oldest_lsn we can have a situation where we've iterated to say buffer pool 3 and another thread adds two new dirty pages, the first to buffer pool 1 and the second to buffer pool 4. Up to say buffer pool 3 the oldest_lsn was 0. Now, we will end up returning the lsn at buffer pool 4 as the oldest LSN. We prevent this by acquiring the flush order mutex. One other future option is to calculate the min_lsn when flushing pages from the list and maintaining a running total using atomics. That way we can get rid of this function altogether. The atomics will only really be required when we do parallel flushing. ------------------------------------------------------------------------ r6992 | sbains | 2010-04-14 02:45:59 +0300 (Wed, 14 Apr 2010) | 2 lines Changed paths: M /branches/innodb+multibp/include/ut0rbt.h M /branches/innodb+multibp/ut/ut0rbt.c branches/innodb+multibp: Fix copyright of the rbt code. ------------------------------------------------------------------------
2010-04-19 17:44:15 +02:00
/**********************************************************************//**
Verify the integrity of the RB tree. For debugging. 0 failure else height
of tree (in count of black nodes).
@return TRUE if OK FALSE if tree invalid. */
ibool
rbt_validate(
/*=========*/
const ib_rbt_t* tree); /*!< in: tree to validate */
#endif /* UNIV_DEBUG || IB_RBT_TESTING */
#endif /* INNOBASE_UT0RBT_H */