lp:~laurynas-biveinis/percona-server/xtradb-multiple-bmp-files-51

Created by Laurynas Biveinis on 2012-08-23 and last modified on 2012-11-25
Get this branch:
bzr branch lp:~laurynas-biveinis/percona-server/xtradb-multiple-bmp-files-51
Only Laurynas Biveinis can upload to this branch. If you are Laurynas Biveinis please log in for upload directions.

Branch merges

Related bugs

Related blueprints

Branch information

Recent revisions

503. By Laurynas Biveinis on 2012-11-25

Implement multiple bitmap file support for the XtraDB bitmap writer.

Blueprints:
https://blueprints.launchpad.net/percona-server/+spec/xtradb-multiple-bmp-files
and
https://blueprints.launchpad.net/percona-server/+spec/i-s-changed-pages-multiple-bmp

The INFORMATION_SCHEMA blueprint is implemented at the same time
because of the core multiple bitmap file support breaking the existing
single-file INFORMATION_SCHEMA support.

Core changes:

- New types log_online_bitmap_file_t and
  log_online_bitmap_file_range_t.

- Added new dynamic XtraDB variable innodb_max_bitmap_file_size, new
  variable srv_max_bitmap_file_size in srv0srv.h/srv0srv.c.

- Replace log_bitmap_struct fields out_name, out and out_offset with a
  field out of log_online_bitmap_file_t. Add field out_seq_num in
  log_bitmap_struct for storing the current bitmap file sequence number.

- Renamed modified_page_stem to bmp_file_name_stem, added new constant
  bmp_file_name_template with C format tags for the various bitmap file
  components.

- Factor out log_online_read_bitmap_page() out of
  log_online_read_last_tracked_lsn() for reuse.

- Factor out log_online_can_track_missing() from
  log_online_track_missing_on_startup() for reuse and handle the case
  of last tracked LSN in future. Robustify the latter function
  against empty bitmap files (a more common occurrence with multiple
  file support.)

- New functions log_online_make_bitmap_name(),
  log_online_start_bitmap_file(), log_online_rotate_bitmap_file(),
  log_online_is_bitmap_file() for multiple file support.

- Enumerate the data directory in log_online_read_init() to find the
  last bitmap file and open it, read last tracked LSN, then rotate the
  file. If there are no previous bitmap files, create the 1st one in
  sequence.

- At the start of log_online_write_bitmap() check if the bitmap file
  size is equal or greater than srv_max_bitmap_file_size and rotate it
  if it is.

- Revert fixed-in-upstream-in-different-way bug 937859 (64128) fix.

- Move log tracking subsystem initialization from
  innobase_create_or_start_for_mysql() to a new function
  init_log_online(). Call it earlier: immediatelly after opening log
  files when a new database is created or immediately after
  recv_recovery_from_checkpoint_start() when existing database is
  used (bug 1076892).

- Coding style fixes.

INFORMATION_SCHEMA (and XtraBackup) changes:

- Move log_bitmap_iterator_struct in log0online.h to match InnoDB
  coding conventions. Replace its fields in_name, in and in_offset
  with a field in of log_online_bitmap_file_t.

- New functions log_online_setup_bitmap_file_range(),
  log_online_open_bitmap_file_read_only() and
  log_online_diagnose_bitmap_eof().

- Adjust log_online_bitmap_iterator_init() to take an LSN range, use
  log_online_setup_bitmap_file_range() to get the list of required
  files, open the 1st file in sequence.

- Adjust log_online_bitmap_iterator_release() to close the current
  file only if it's open.

- Adjust log_online_bitmap_iterator_next() to advance to next file
  upon exhausting the current one and use the newly-introduced
  functions.

- Expand limit_lsn_range_from_condition() to handle lower bound
  too. Fix handling of inequality vs strict inequality for upper
  bounds. Pass both limits to log_online_bitmap_iterator_init()

- Add DBUG_ENTER()/DBUG_RETURN() to i_s_innodb_changed_pages_fill(),
  check for PROCESS_ACL user right, and return instead of crashing if
  InnoDB is not started (bug 1050466).

- Coding style fixes.

Testcase changes:

- For all testcases, replace the log capacity-exceeding workloads with
  server restarts and delete any existing bitmap files at the start
  (bug 1071877).

- Added a test for server startup bitmap file rotation to
  percona_changed_pages_bmp.test.

- Adjust the bitmap test cases to list the existing bitmap files (with
  start LSN name component removed for determinism) in addition to
  checking if the first bitmap file is present. Also make other minor
  non-functional adjustments for the multiple bitmap file.

- Add a test for the case of completely corrupted last bitmap file.

- Reformatted percona_changed_pages_bmp.test to show the boundaries
  between individual tests better.

- For percona_changed_pages.test, use the server restarts to generate
  several checkpoints. Check and save the tracked LSN ranges for
  every restart. Add additional test for distinct page ids. Expand
  ICP tests to cover more cases, lower bound testing and multiple
  bitmap files.

- Re-recorded percona_server_variables_debug.test and
  percona_server_variables_release.test testcases.

502. By Stewart Smith on 2012-11-16

merge fix for Bug #719386: Query_time is increasing for every query a stored procedure logs to the slow log

501. By Stewart Smith on 2012-11-16

merge fi xfor Bug #1064326: Fake changes blocking real changes due to locking

500. By Stewart Smith on 2012-11-16

merge fix for Bug #890404: valgrind warning from innodb_fake_changes patch

499. By Stewart Smith on 2012-11-16

merge introduction of debian dbg packages

498. By Stewart Smith on 2012-11-16

merge packaging fixes: bug 908620

497. By Stewart Smith on 2012-11-16

merge
PS5.1 Deprecate innodb_fast_checksum

496. By Stewart Smith on 2012-11-16

merge fix for Bug #1012715: Crash resistant replication breaks with binlog XA transaction recovery

495. By Hrvoje Matijakovic on 2012-10-31

Bug fix for Bug#1056658

494. By Stewart Smith on 2012-10-23

merge 5.1.66-14.1 release notes

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
Stacked on:
lp:percona-server/5.5
This branch contains Public information 
Everyone can see this information.