mirror of
https://github.com/MariaDB/server.git
synced 2026-05-04 14:15:33 +02:00
srv0srv.c, os0file.c, log0recv.h, log0log.h, fil0fil.h, fsp0fsp.c, fil0fil.c:
Merge trx0trx.c: Print more info about a trx in SHOW INNODB status; try to find the bug reported by Plaxo buf0buf.c: Check that page log sequence numbers are not in the future log0recv.c, log0log.c: Fixed a bug: if you used big BLOBs, and your log files were relatively small, InnoDB could in a big BLOB operation temporarily write over the log produced AFTER the latest checkpoint. If InnoDB would crash at that moment, then the crash recovery would fail, because InnoDB would not be able to scan the log even up to the latest checkpoint. Starting from this version, InnoDB tries to ensure the latest checkpoint is young enough. If that is not possible, InnoDB prints a warning to the .err log innobase/log/log0log.c: Fixed a bug: if you used big BLOBs, and your log files were relatively small, InnoDB could in a big BLOB operation temporarily write over the log produced AFTER the latest checkpoint. If InnoDB would crash at that moment, then the crash recovery would fail, because InnoDB would not be able to scan the log even up to the latest checkpoint. Starting from this version, InnoDB tries to ensure the latest checkpoint is young enough. If that is not possible, InnoDB prints a warning to the .err log innobase/log/log0recv.c: Fixed a bug: if you used big BLOBs, and your log files were relatively small, InnoDB could in a big BLOB operation temporarily write over the log produced AFTER the latest checkpoint. If InnoDB would crash at that moment, then the crash recovery would fail, because InnoDB would not be able to scan the log even up to the latest checkpoint. Starting from this version, InnoDB tries to ensure the latest checkpoint is young enough. If that is not possible, InnoDB prints a warning to the .err log innobase/buf/buf0buf.c: Check that page log sequence numbers are not in the future innobase/trx/trx0trx.c: Print more info about a trx in SHOW INNODB status; try to find the bug reported by Plaxo innobase/fil/fil0fil.c: Merge innobase/fsp/fsp0fsp.c: Merge innobase/include/fil0fil.h: Merge innobase/include/log0log.h: Merge innobase/include/log0recv.h: Merge innobase/os/os0file.c: Merge innobase/srv/srv0srv.c: Merge
This commit is contained in:
parent
cff7465b84
commit
df5b088919
11 changed files with 253 additions and 15 deletions
|
|
@ -2709,10 +2709,52 @@ fseg_free_page_low(
|
|||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
fprintf(stderr,
|
||||
"InnoDB: InnoDB is freeing space %lu page %lu,\n"
|
||||
"InnoDB: which belongs to descr seg %lu %lu\n"
|
||||
"InnoDB: segment %lu %lu.\n",
|
||||
space, page,
|
||||
ut_dulint_get_high(
|
||||
mtr_read_dulint(descr + XDES_ID, MLOG_8BYTES, mtr)),
|
||||
ut_dulint_get_low(
|
||||
mtr_read_dulint(descr + XDES_ID, MLOG_8BYTES, mtr)),
|
||||
ut_dulint_get_high(
|
||||
mtr_read_dulint(seg_inode + FSEG_ID, MLOG_8BYTES, mtr)),
|
||||
ut_dulint_get_low(
|
||||
mtr_read_dulint(seg_inode + FSEG_ID, MLOG_8BYTES, mtr)));
|
||||
*/
|
||||
/* If we get here, the page is in some extent of the segment */
|
||||
ut_a(0 == ut_dulint_cmp(
|
||||
if (0 != ut_dulint_cmp(
|
||||
mtr_read_dulint(descr + XDES_ID, MLOG_8BYTES, mtr),
|
||||
mtr_read_dulint(seg_inode + FSEG_ID, MLOG_8BYTES, mtr)));
|
||||
mtr_read_dulint(seg_inode + FSEG_ID, MLOG_8BYTES, mtr))) {
|
||||
|
||||
ut_sprintf_buf(errbuf, descr, 40);
|
||||
fprintf(stderr,
|
||||
"InnoDB: Dump of the tablespace extent descriptor: %s\n", errbuf);
|
||||
ut_sprintf_buf(errbuf, seg_inode, 40);
|
||||
fprintf(stderr,
|
||||
"InnoDB: Dump of the segment inode: %s\n", errbuf);
|
||||
|
||||
fprintf(stderr,
|
||||
"InnoDB: Serious error: InnoDB is trying to free space %lu page %lu,\n"
|
||||
"InnoDB: which does not belong to segment %lu %lu but belongs\n"
|
||||
"InnoDB: to segment %lu %lu.\n",
|
||||
space, page,
|
||||
ut_dulint_get_high(
|
||||
mtr_read_dulint(descr + XDES_ID, MLOG_8BYTES, mtr)),
|
||||
ut_dulint_get_low(
|
||||
mtr_read_dulint(descr + XDES_ID, MLOG_8BYTES, mtr)),
|
||||
ut_dulint_get_high(
|
||||
mtr_read_dulint(seg_inode + FSEG_ID, MLOG_8BYTES, mtr)),
|
||||
ut_dulint_get_low(
|
||||
mtr_read_dulint(seg_inode + FSEG_ID, MLOG_8BYTES, mtr)));
|
||||
|
||||
fprintf(stderr,
|
||||
"InnoDB: If the InnoDB recovery crashes here, see section 6.1\n"
|
||||
"InnoDB: of http://www.innodb.com/ibman.html about forcing recovery.\n");
|
||||
ut_a(0);
|
||||
}
|
||||
|
||||
not_full_n_used = mtr_read_ulint(seg_inode + FSEG_NOT_FULL_N_USED,
|
||||
MLOG_4BYTES, mtr);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue