Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.1.4, 10.2.0, 10.3.0, 10.4.0, 10.5.0
-
None
-
10.1.6-1, 10.1.6-2, 10.1.21
Description
Scrubbing tests somehow got encryption enabled in their opt files. After removing --innodb-encrypt-tables=ON and --innodb-encrypt-log=ON from innodb_scrub.opt, innodb_scrub_background.opt, innodb_scrub_compressed.opt, these tests start to fail.
Now that the problematic ‘background scrubbing’ and all scrubbing code that incorrectly skipped redo logging has been removed from MariaDB Server 10.5.2, we should continue where MDEV-15528 left off, and finally enable the scrubbing tests to prove that the theoretically sound way of scrubbing actually works:
- Remove the invalidate parameter of btr_free_root()
- Introduce a data structure that allows us to mark a range of data pages of a tablespace as freed, even when those pages are not in the buffer pool. This could be attached to fil_space_t.
- Ensure that crash recovery will replay the FREE_PAGE records (extend the above mentioned ranges of freed pages), and punch holes in page_compressed tables, or overwrite blocks with zeroes if innodb_immediate_scrub_data_uncompressed is set.
- On page flush, try to combine large punch_hole or zero-initialization requests to a small one.
- Optional: when freeing the last pages of a tablespace, write a TRIM_PAGES record, and on page flush, invoke ftruncate() to shrink the file. (Do this on any file, when neither scrubbing nor page_compressed is being used.)
Attachments
Issue Links
- blocks
-
MDEV-17596 Assertion `block->page.flush_observer == __null || block->page.flush_observer == observer' failed in buf_flush_note_modification
- Closed
- causes
-
MDEV-22911 Fix the Valgrind & MSAN instrumentation of MDEV-8139
- Closed
-
MDEV-22931 mtr_t::mtr_t() allocates some memory
- Closed
-
MDEV-22970 Possible corruption of page_compressed tables, or when scrubbing is enabled
- Closed
-
MDEV-24445 Using innodb_undo_tablespaces corrupts system tablespace
- Closed
-
MDEV-24765 fseg_free_extent fails to call buf_page_free() for the whole segment
- Closed
-
MDEV-31253 Freed data pages are not always being scrubbed
- Closed
-
MDEV-35494 fil_space_t::fil_space_t() is potentially unsafe with GCC -flifetime-dse
- Closed
- is duplicated by
-
MDEV-20476 Assertion `!"wrong page type"' failed in row_log_table_low or ER_NOT_KEYFILE upon concurrent ALTER and UPDATE
- Closed
- relates to
-
MDEV-11802 innodb.innodb_bug14676111 fails in buildbot due to InnoDB purge failing to start when there is work to do
- Closed
-
MDEV-12288 Reset DB_TRX_ID when the history is removed, to speed up MVCC
- Closed
-
MDEV-13536 DB_TRX_ID is not actually being reset when the history is removed
- Closed
-
MDEV-14425 Change the InnoDB redo log format to reduce write amplification
- Closed
-
MDEV-15528 Avoid writing freed InnoDB pages
- Closed
-
MDEV-32151 innodb_immediate_scrub_data_uncompressed=ON may fail to scrub temporary tablespace pages
- Closed
-
MDEV-11068 Review which innodb_compression_algorithm to support in binary packages
- Closed
-
MDEV-15949 InnoDB: Failing assertion: space->n_pending_ops == 0 in fil_delete_tablespace upon DROP TABLE
- Closed
-
MDEV-20813 Assertion `!srv_safe_truncate || !newest_lsn || fil_page_get_type(page)' or `!newest_lsn || fil_page_get_type(page)' failed in buf_flush_init_for_writing
- Closed
-
MDEV-24780 [FATAL] InnoDB: Trying to read page number <...> with encryption and innodb-background-scrub-data-uncompressed
- Closed