summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2023-02-06 20:29:29 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2023-02-24 14:49:20 +0200
commita61d762c7d454bd43f76f472e1dc9a08fc77e4dc (patch)
treef3cdb3244ea83c18358d0f2de6be29a7f6d98b8a
parentf8a85af8ca1c937b8d4f847477bd282f80251cde (diff)
downloadmariadb-git-a61d762c7d454bd43f76f472e1dc9a08fc77e4dc.tar.gz
MDEV-30479 OPT_PAGE_CHECKSUM mismatch after innodb_undo_log_truncate=ON
page_recv_t::trim(): Do remove log records for mini-transactions that end right at the threshold LSN. This will avoid an inconsistency where a dirty page had been evicted from the buffer pool during undo tablespace truncation, and recovery would attempt to apply log records for which the last available copy in the data file is too new. These changes would be discarded anyway.
-rw-r--r--storage/innobase/log/log0recv.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/storage/innobase/log/log0recv.cc b/storage/innobase/log/log0recv.cc
index d21251dd2d9..7129de59e64 100644
--- a/storage/innobase/log/log0recv.cc
+++ b/storage/innobase/log/log0recv.cc
@@ -1616,7 +1616,7 @@ inline bool page_recv_t::trim(lsn_t start_lsn)
{
while (log.head)
{
- if (log.head->lsn >= start_lsn) return false;
+ if (log.head->lsn > start_lsn) return false;
last_offset= 1; /* the next record must not be same_page */
log_rec_t *next= log.head->next;
recv_sys.free(log.head);