Skip to content

Conversation

@Thirunarayanan
Copy link
Member

Reason:

During undo tablespace truncation, pages with LSNs older than the tablespace creation LSN may still exist in the buffer pool and get submitted to the doublewrite buffer. When mtr_t::commit_shrink() is invoked shortly after doublewrite batch submission, this can lead to out-of-bounds write errors.

Fix:

buf_dblwr_t::flush_buffered_writes_completed() : skip doublewrite processing for pages where the page LSN is older
than the tablespace creation LSN. Such pages belong to the old tablespace before truncation and should not be written through the doublewrite buffer.

@CLAassistant
Copy link

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

During undo tablespace truncation, pages with LSNs older than the
tablespace creation LSN may still exist in the buffer pool and get
submitted to the doublewrite buffer. When mtr_t::commit_shrink() is
invoked shortly after doublewrite batch submission,
this can lead to out-of-bounds write errors.

Fix:
===
buf_dblwr_t::flush_buffered_writes_completed() : skip doublewrite
processing for pages where the page LSN is older
than the tablespace creation LSN. Such pages belong to the old
tablespace before truncation and should not be written through the
doublewrite buffer.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

4 participants