diff options
author | Michael Widenius <monty@mariadb.org> | 2019-06-13 17:54:28 +0300 |
---|---|---|
committer | Michael Widenius <monty@mariadb.org> | 2019-06-25 12:07:50 +0300 |
commit | 793e5be7707fac95cb71f9c1e74d97424eeef09d (patch) | |
tree | 54b63d46b2ebff1d764ce6e3d1ad2b8769838d87 /storage/maria | |
parent | 204434f2d08fa7b1bcb748b2a07ab76d9ad0ae31 (diff) | |
download | mariadb-git-793e5be7707fac95cb71f9c1e74d97424eeef09d.tar.gz |
Give a readable error if aria_log page numbers doesn't match
MDEV-18461 Aria crash recovery failures
This does not fix the bug reported in the MDEV, but
now we get an error message of the problem instead of
an assert.
Diffstat (limited to 'storage/maria')
-rw-r--r-- | storage/maria/ma_loghandler.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/storage/maria/ma_loghandler.c b/storage/maria/ma_loghandler.c index 03faadbb42a..beda5f46ff4 100644 --- a/storage/maria/ma_loghandler.c +++ b/storage/maria/ma_loghandler.c @@ -3856,7 +3856,14 @@ my_bool translog_init_with_table(const char *directory, my_bool pageok; DBUG_PRINT("info", ("The log is really present")); - DBUG_ASSERT(sure_page <= last_page); + if (sure_page > last_page) + { + my_printf_error(HA_ERR_GENERIC, "Aria engine: log data error\n" + "last_log_page: " LSN_FMT " is less than\n" + "checkpoint page: " LSN_FMT, MYF(0), + LSN_IN_PARTS(last_page), LSN_IN_PARTS(sure_page)); + goto err; + } /* TODO: check page size */ @@ -4004,7 +4011,7 @@ my_bool translog_init_with_table(const char *directory, if (!logs_found) { TRANSLOG_FILE *file= (TRANSLOG_FILE*)my_malloc(sizeof(TRANSLOG_FILE), - MYF(0)); + MYF(MY_WME)); DBUG_PRINT("info", ("The log is not found => we will create new log")); if (file == NULL) goto err; |