1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-31 22:22:30 +03:00

Applying InnoDB snapshot

Detailed revision comments:

r6498 | marko | 2010-01-21 11:22:52 +0200 (Thu, 21 Jan 2010) | 15 lines
branches/zip: buf_page_get_gen(): Obey recv_no_ibuf_operations
and do not call ibuf_merge_or_delete_for_page() in crash recovery,
before the redo log has been applied.
This could cure some hard-to-repeat, hard-to-explain bugs
related to secondary indexes.

A possible recipe to repeat the bug:

1. update a secondary index leaf page on a compressed table
2. evict the page from the buffer pool while it is still dirty
3. ibuf_insert() something for the page
4. crash
5. crash recovery; ibuf merge would be done too early,
before applying redo log to the sec index page or the ibuf pages
This commit is contained in:
Sergey Vojtovich
2010-04-01 15:25:39 +04:00
parent 33bac9249f
commit 2eeef6b036
2 changed files with 7 additions and 1 deletions

View File

@@ -1,3 +1,9 @@
2010-01-21 The InnoDB Team
* buf/buf0buf.c:
Do not merge buffered inserts to compressed pages before
the redo log has been applied in crash recovery.
2010-01-13 The InnoDB Team 2010-01-13 The InnoDB Team
* row/row0sel.c: * row/row0sel.c:

View File

@@ -2239,7 +2239,7 @@ wait_until_unfixed:
while not holding buf_pool_mutex or block->mutex. */ while not holding buf_pool_mutex or block->mutex. */
success = buf_zip_decompress(block, srv_use_checksums); success = buf_zip_decompress(block, srv_use_checksums);
if (UNIV_LIKELY(success)) { if (UNIV_LIKELY(success && !recv_no_ibuf_operations)) {
ibuf_merge_or_delete_for_page(block, space, offset, ibuf_merge_or_delete_for_page(block, space, offset,
zip_size, TRUE); zip_size, TRUE);
} }