mirror of
https://github.com/MariaDB/server.git
synced 2025-01-21 06:22:28 +01:00
branches/zip: recv_parse_log_rec(): Remove a bogus assertion about page_no.
TODO: We might also consider removing recv_max_parsed_page_no, because it does not make much sense with *.ibd files. recv_report_corrupt_log(), recv_scan_log_recs(): Abort when a corrupted log record has been found, unless innodb_force_recovery has been set. This fixes Issue #464. rb://265 approved by Heikki Tuuri
This commit is contained in:
parent
48cf851d1e
commit
6c7ddbe2ed
2 changed files with 25 additions and 9 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2010-03-10 The InnoDB Team
|
||||||
|
|
||||||
|
* log/log0recv.c:
|
||||||
|
Remove a bogus assertion about page numbers exceeding 0x90000000
|
||||||
|
in the redo log. Abort when encountering a corrupted redo log
|
||||||
|
record, unless innodb_force_recovery is set.
|
||||||
|
|
||||||
2010-03-09 The InnoDB Team
|
2010-03-09 The InnoDB Team
|
||||||
|
|
||||||
* handler/ha_innodb.cc:
|
* handler/ha_innodb.cc:
|
||||||
|
|
|
@ -2052,15 +2052,6 @@ recv_parse_log_rec(
|
||||||
}
|
}
|
||||||
#endif /* UNIV_LOG_LSN_DEBUG */
|
#endif /* UNIV_LOG_LSN_DEBUG */
|
||||||
|
|
||||||
/* Check that page_no is sensible */
|
|
||||||
|
|
||||||
if (UNIV_UNLIKELY(*page_no > 0x8FFFFFFFUL)) {
|
|
||||||
|
|
||||||
recv_sys->found_corrupt_log = TRUE;
|
|
||||||
|
|
||||||
return(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
new_ptr = recv_parse_or_apply_log_rec_body(*type, new_ptr, end_ptr,
|
new_ptr = recv_parse_or_apply_log_rec_body(*type, new_ptr, end_ptr,
|
||||||
NULL, NULL);
|
NULL, NULL);
|
||||||
if (UNIV_UNLIKELY(new_ptr == NULL)) {
|
if (UNIV_UNLIKELY(new_ptr == NULL)) {
|
||||||
|
@ -2169,6 +2160,14 @@ recv_report_corrupt_log(
|
||||||
putc('\n', stderr);
|
putc('\n', stderr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef UNIV_HOTBACKUP
|
||||||
|
if (!srv_force_recovery) {
|
||||||
|
fputs("InnoDB: Set innodb_force_recovery"
|
||||||
|
" to ignore this error.\n", stderr);
|
||||||
|
ut_error;
|
||||||
|
}
|
||||||
|
#endif /* !UNIV_HOTBACKUP */
|
||||||
|
|
||||||
fputs("InnoDB: WARNING: the log file may have been corrupt and it\n"
|
fputs("InnoDB: WARNING: the log file may have been corrupt and it\n"
|
||||||
"InnoDB: is possible that the log scan did not proceed\n"
|
"InnoDB: is possible that the log scan did not proceed\n"
|
||||||
"InnoDB: far enough in recovery! Please run CHECK TABLE\n"
|
"InnoDB: far enough in recovery! Please run CHECK TABLE\n"
|
||||||
|
@ -2683,6 +2682,16 @@ recv_scan_log_recs(
|
||||||
|
|
||||||
recv_sys->found_corrupt_log = TRUE;
|
recv_sys->found_corrupt_log = TRUE;
|
||||||
|
|
||||||
|
#ifndef UNIV_HOTBACKUP
|
||||||
|
if (!srv_force_recovery) {
|
||||||
|
fputs("InnoDB: Set"
|
||||||
|
" innodb_force_recovery"
|
||||||
|
" to ignore this error.\n",
|
||||||
|
stderr);
|
||||||
|
ut_error;
|
||||||
|
}
|
||||||
|
#endif /* !UNIV_HOTBACKUP */
|
||||||
|
|
||||||
} else if (!recv_sys->found_corrupt_log) {
|
} else if (!recv_sys->found_corrupt_log) {
|
||||||
more_data = recv_sys_add_to_parsing_buf(
|
more_data = recv_sys_add_to_parsing_buf(
|
||||||
log_block, scanned_lsn);
|
log_block, scanned_lsn);
|
||||||
|
|
Loading…
Reference in a new issue