Merge lp:~laurynas-biveinis/percona-server/bug1342494-5.5 into lp:percona-server/5.5

Proposed by Laurynas Biveinis
Status: Merged
Approved by: Laurynas Biveinis
Approved revision: no longer in the source branch.
Merged at revision: 682
Proposed branch: lp:~laurynas-biveinis/percona-server/bug1342494-5.5
Merge into: lp:percona-server/5.5
Diff against target: 92 lines (+40/-8)
4 files modified
mysql-test/suite/innodb/r/percona_changed_pages_log_tracking_off.result (+4/-0)
mysql-test/suite/innodb/t/percona_changed_pages_log_tracking_off-master.opt (+1/-0)
mysql-test/suite/innodb/t/percona_changed_pages_log_tracking_off.test (+22/-0)
storage/innobase/log/log0online.c (+13/-8)
To merge this branch: bzr merge lp:~laurynas-biveinis/percona-server/bug1342494-5.5
Reviewer Review Type Date Requested Status
Laurynas Biveinis (community) Approve
Review via email: mp+227327@code.launchpad.net

Description of the change

Fix bug 1342494 (InnoDB: Failing assertion:
bitmap_files->files[i].start_lsn >= bitmap_files->files[i -
1].start_lsn on inconsistent bitmap file directory).

If the bitmap directory has a bitmap file sequence with a start LSN of
one file less than a start LSN of the previous file, a debug build
will assert on a corresponding consistency check.

Fix by replacing the debug asserts with regular checks in
log_online_setup_bitmap_file_range.

Add a testcase percona_changed_pages_log_tracking_off.

http://jenkins.percona.com/job/percona-server-5.5-param/1026/

To post a comment you must log in.
Revision history for this message
Laurynas Biveinis (laurynas-biveinis) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added file 'mysql-test/suite/innodb/r/percona_changed_pages_log_tracking_off.result'
--- mysql-test/suite/innodb/r/percona_changed_pages_log_tracking_off.result 1970-01-01 00:00:00 +0000
+++ mysql-test/suite/innodb/r/percona_changed_pages_log_tracking_off.result 2014-07-18 13:49:18 +0000
@@ -0,0 +1,4 @@
1creating inconsistent bitmap dir: start LSN of 3rd file < start LSN of 2nd file
2call mtr.add_suppression("inconsistent bitmap file directory");
3SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES;
4ERROR HY000: Can't read record in system table
05
=== added file 'mysql-test/suite/innodb/t/percona_changed_pages_log_tracking_off-master.opt'
--- mysql-test/suite/innodb/t/percona_changed_pages_log_tracking_off-master.opt 1970-01-01 00:00:00 +0000
+++ mysql-test/suite/innodb/t/percona_changed_pages_log_tracking_off-master.opt 2014-07-18 13:49:18 +0000
@@ -0,0 +1,1 @@
1--innodb-track-changed-pages=0
02
=== added file 'mysql-test/suite/innodb/t/percona_changed_pages_log_tracking_off.test'
--- mysql-test/suite/innodb/t/percona_changed_pages_log_tracking_off.test 1970-01-01 00:00:00 +0000
+++ mysql-test/suite/innodb/t/percona_changed_pages_log_tracking_off.test 2014-07-18 13:49:18 +0000
@@ -0,0 +1,22 @@
1# Tests for queries from INFORMATION_SCHEMA.INNODB_CHANGED_PAGES that don't require
2# a running log tracker
3
4let $MYSQLD_DATADIR= `select @@datadir`;
5
6# Test for bug 1342494: InnoDB: Failing assertion: bitmap_files->files[i].start_lsn
7# >= bitmap_files->files[i - 1].start_lsn on inconsistent bitmap file directory
8
9--echo creating inconsistent bitmap dir: start LSN of 3rd file < start LSN of 2nd file
10write_file $MYSQLD_DATADIR/ib_modified_log_1_0.xdb;
11EOF
12write_file $MYSQLD_DATADIR/ib_modified_log_2_10.xdb;
13EOF
14write_file $MYSQLD_DATADIR/ib_modified_log_3_5.xdb;
15EOF
16
17call mtr.add_suppression("inconsistent bitmap file directory");
18
19--error ER_CANT_FIND_SYSTEM_REC
20SELECT * FROM INFORMATION_SCHEMA.INNODB_CHANGED_PAGES;
21
22remove_files_wildcard $MYSQLD_DATADIR ib_modified_log*;
023
=== modified file 'storage/innobase/log/log0online.c'
--- storage/innobase/log/log0online.c 2014-07-16 09:04:59 +0000
+++ storage/innobase/log/log0online.c 2014-07-18 13:49:18 +0000
@@ -1268,6 +1268,7 @@
1268/*********************************************************************//**1268/*********************************************************************//**
1269Diagnose a bitmap file range setup failure and free the partially-initialized1269Diagnose a bitmap file range setup failure and free the partially-initialized
1270bitmap file range. */1270bitmap file range. */
1271UNIV_COLD
1271static1272static
1272void1273void
1273log_online_diagnose_inconsistent_dir(1274log_online_diagnose_inconsistent_dir(
@@ -1447,26 +1448,30 @@
1447 return FALSE;1448 return FALSE;
1448 }1449 }
14491450
1450#ifdef UNIV_DEBUG1451 if (!bitmap_files->files[0].seq_num
1451 if (!bitmap_files->files[0].seq_num) {1452 || bitmap_files->files[0].seq_num != first_file_seq_num) {
14521453
1453 log_online_diagnose_inconsistent_dir(bitmap_files);1454 log_online_diagnose_inconsistent_dir(bitmap_files);
1454 return FALSE;1455 return FALSE;
1455 }1456 }
1456 ut_ad(bitmap_files->files[0].seq_num == first_file_seq_num);1457
1457 {1458 {
1458 size_t i;1459 size_t i;
1459 for (i = 1; i < bitmap_files->count; i++) {1460 for (i = 1; i < bitmap_files->count; i++) {
1460 if (!bitmap_files->files[i].seq_num) {1461 if (!bitmap_files->files[i].seq_num) {
1461 break;1462 break;
1462 }1463 }
1463 ut_ad(bitmap_files->files[i].seq_num1464 if ((bitmap_files->files[i].seq_num
1464 > bitmap_files->files[i - 1].seq_num);1465 <= bitmap_files->files[i - 1].seq_num)
1465 ut_ad(bitmap_files->files[i].start_lsn1466 || (bitmap_files->files[i].start_lsn
1466 >= bitmap_files->files[i - 1].start_lsn);1467 < bitmap_files->files[i - 1].start_lsn)) {
1468
1469 log_online_diagnose_inconsistent_dir(
1470 bitmap_files);
1471 return FALSE;
1472 }
1467 }1473 }
1468 }1474 }
1469#endif
14701475
1471 return TRUE;1476 return TRUE;
1472}1477}

Subscribers

People subscribed via source and target branches