summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2021-10-20 12:59:07 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2021-10-20 12:59:07 +0300
commit73dd5a6fc01be89b54d9cafb0b2dfd2224885099 (patch)
tree61ebd8a6ce6893e606681ea269d4730e00faa2f7
parent97ebfd923cab11d320500e2ace781e5e1c04bb4b (diff)
downloadmariadb-git-73dd5a6fc01be89b54d9cafb0b2dfd2224885099.tar.gz
fixup! 97ebfd923cab11d320500e2ace781e5e1c04bb4b
The test encryption.innodb_encrypt_log would sometimes SIGSEGV.
-rw-r--r--storage/innobase/buf/buf0flu.cc5
-rw-r--r--storage/innobase/srv/srv0start.cc6
2 files changed, 7 insertions, 4 deletions
diff --git a/storage/innobase/buf/buf0flu.cc b/storage/innobase/buf/buf0flu.cc
index 232368e5b54..0dbe3cb65d1 100644
--- a/storage/innobase/buf/buf0flu.cc
+++ b/storage/innobase/buf/buf0flu.cc
@@ -1818,6 +1818,11 @@ static void buf_flush_wait(lsn_t lsn)
os_aio_wait_until_no_pending_writes();
mysql_mutex_lock(&buf_pool.flush_list_mutex);
}
+
+ /* Wait for the checkpoint. */
+ while (buf_flush_sync_lsn)
+ my_cond_wait(&buf_pool.done_flush_list,
+ &buf_pool.flush_list_mutex.m_mutex);
}
/** Wait until all persistent pages are flushed up to a limit.
diff --git a/storage/innobase/srv/srv0start.cc b/storage/innobase/srv/srv0start.cc
index 0c48dbcebfc..d64f00c9691 100644
--- a/storage/innobase/srv/srv0start.cc
+++ b/storage/innobase/srv/srv0start.cc
@@ -330,13 +330,13 @@ static dberr_t create_log_file(bool create_new_db, lsn_t lsn,
srv_startup_is_before_trx_rollback_phase = false;
}
+ /* Enable checkpoints in buf_flush_page_cleaner(). */
+ recv_sys.recovery_on = false;
mysql_mutex_unlock(&log_sys.mutex);
log_make_checkpoint();
log_buffer_flush_to_disk();
- /* Enable checkpoints in buf_flush_page_cleaner(). */
- recv_sys.recovery_on = false;
return DB_SUCCESS;
}
@@ -888,11 +888,9 @@ static lsn_t srv_prepare_to_delete_redo_log_file(bool old_exists)
{
DBUG_ENTER("srv_prepare_to_delete_redo_log_file");
- mysql_mutex_lock(&buf_pool.flush_list_mutex);
/* Disable checkpoints in the page cleaner. */
ut_ad(!recv_sys.recovery_on);
recv_sys.recovery_on= true;
- mysql_mutex_unlock(&buf_pool.flush_list_mutex);
/* Clean the buffer pool. */
buf_flush_sync_batch(log_sys.get_lsn());