During page flush it may be enqueued for flush again when innodb_flush_neighbours=0
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Percona patches |
Won't Fix
|
Wishlist
|
Unassigned | ||
Percona-XtraDB |
Fix Released
|
High
|
Unassigned |
Bug Description
I've got the following crash: Assertion failure in thread 1274956096 in file buf/buf0buf.c line 3428
Ther reason is that block_mutex temporary released after checking buf_flush_
--innodb_
I think the safer solution is as follows:
diff -r 101cd9bcb1fa storage/
--- a/storage/
+++ b/storage/
@@ -863,8 +863,9 @@
/* out: number of pages flushed */
ulint space, /* in: space id */
ulint offset, /* in: page offset */
- enum buf_flush flush_type) /* in: BUF_FLUSH_LRU or
+ enum buf_flush flush_type, /* in: BUF_FLUSH_LRU or
BUF_
+ ibool flush_neighbors)
{
buf_page_t* bpage;
ulint low, high;
@@ -873,7 +874,7 @@
ut_ad(flush_type == BUF_FLUSH_LRU || flush_type == BUF_FLUSH_LIST);
- if (UT_LIST_
+ if (UT_LIST_
/* If there is little space, it is better not to flush any
block except from the end of the LRU list */
@@ -1048,23 +1049,10 @@
old_page_count = page_count;
- if (srv_flush_
- /* Try to flush also all the neighbors */
page_count += buf_flush_
- space, offset, flush_type);
- } else {
- /* Try to flush the page only */
- buf_pool_
+ space, offset, flush_type,
+ srv_flush_
- mutex_t* block_mutex = buf_page_
- mutex_enter(
-
- buf_page_t* bpage_tmp = buf_page_
- if (bpage_tmp) {
- buf_flush_
- page_count++;
- }
- }
/* fprintf(stderr,
"Flush type %lu, page no %lu, neighb %lu\n",
flush_type, offset,
Related branches
Changed in percona-xtradb: | |
assignee: | nobody → Yasufumi Kinoshita (yasufumi-kinoshita) |
importance: | Undecided → High |
Changed in percona-patches: | |
importance: | Undecided → Wishlist |
Changed in percona-xtradb: | |
status: | New → Fix Committed |
Changed in percona-xtradb: | |
status: | Fix Committed → Fix Released |
Changed in percona-patches: | |
status: | New → Won't Fix |
Percona-Patches also should be changed only for corresponding the source. (not critical)