• irana's avatar
    branches/innodb+ · 7f741204
    irana authored
    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.
      
      ------------------------------------------------------------------------
    7f741204
buf0rea.c 19.2 KB