diff --git a/mysql-test/suite/innodb/t/doublewrite.test b/mysql-test/suite/innodb/t/doublewrite.test index 541e4d23a19..7e38851facb 100644 --- a/mysql-test/suite/innodb/t/doublewrite.test +++ b/mysql-test/suite/innodb/t/doublewrite.test @@ -39,6 +39,9 @@ commit work; SET GLOBAL innodb_fast_shutdown = 0; let $shutdown_timeout=; --source include/restart_mysqld.inc +# Ensure that buf_flush_page_cleaner() has woken up from its +# first my_cond_timedwait() and gone idle. +sleep 1; --source ../include/no_checkpoint_start.inc connect (dml,localhost,root,,); XA START 'x'; diff --git a/scripts/mysql_install_db.sh b/scripts/mysql_install_db.sh index c88abee18ba..c44d8868a71 100644 --- a/scripts/mysql_install_db.sh +++ b/scripts/mysql_install_db.sh @@ -658,7 +658,7 @@ then then echo echo "You can start the MariaDB daemon with:" - echo "cd '$basedir' ; $bindir/mariadb-safe --datadir='$ldata'" + echo "cd '$basedir' ; $bindir/mariadbd-safe --datadir='$ldata'" echo echo "You can test the MariaDB daemon with mysql-test-run.pl" echo "cd '$basedir/@INSTALL_MYSQLTESTDIR@' ; perl mariadb-test-run.pl" diff --git a/storage/innobase/log/log0recv.cc b/storage/innobase/log/log0recv.cc index 495f7becfc9..1d26b7a195e 100644 --- a/storage/innobase/log/log0recv.cc +++ b/storage/innobase/log/log0recv.cc @@ -4875,16 +4875,20 @@ uint32_t recv_dblwr_t::find_first_page(const char *name, pfs_os_file_t file) for (const page_t *page : pages) { uint32_t space_id= page_get_space_id(page); + byte *read_page= nullptr; if (page_get_page_no(page) > 0 || space_id == 0) + { next_page: + aligned_free(read_page); continue; + } uint32_t flags= mach_read_from_4( FSP_HEADER_OFFSET + FSP_SPACE_FLAGS + page); page_id_t page_id(space_id, 0); size_t page_size= fil_space_t::physical_size(flags); if (file_size < 4 * page_size) goto next_page; - byte *read_page= + read_page= static_cast(aligned_malloc(3 * page_size, page_size)); /* Read 3 pages from the file and match the space id with the space id which is stored in @@ -4896,7 +4900,10 @@ next_page: { byte *cur_page= read_page + j * page_size; if (buf_is_zeroes(span(cur_page, page_size))) - return 0; + { + space_id= 0; + goto early_exit; + } if (mach_read_from_4(cur_page + FIL_PAGE_OFFSET) != j + 1 || memcmp(cur_page + FIL_PAGE_SPACE_ID, page + FIL_PAGE_SPACE_ID, 4) || @@ -4904,7 +4911,11 @@ next_page: goto next_page; } if (!restore_first_page(space_id, name, file)) + { +early_exit: + aligned_free(read_page); return space_id; + } break; } }