summaryrefslogtreecommitdiff
path: root/storage/maria/ma_recovery.c
diff options
context:
space:
mode:
authorMonty <monty@mariadb.org>2018-05-15 11:46:55 +0300
committerMonty <monty@mariadb.org>2018-05-15 11:46:55 +0300
commit2b749a7bf4f6a6d70f05e8e4b42d088b397adea8 (patch)
tree6f81ed3e36863c24b492702eec05703b2fceae29 /storage/maria/ma_recovery.c
parent318097bb8f6e12c546b5dcd287416158209dbb39 (diff)
downloadmariadb-git-2b749a7bf4f6a6d70f05e8e4b42d088b397adea8.tar.gz
MDEV-654 Assertion `share->now_transactional' failed in flush_log_for_bitmap on concurrent workload with Aria tables
Problem was that we the bitmap needs to be flushed before disabling logging of redo entires, as writing the bitmap to disk by background checkpoint may cause redo entries.
Diffstat (limited to 'storage/maria/ma_recovery.c')
-rw-r--r--storage/maria/ma_recovery.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/storage/maria/ma_recovery.c b/storage/maria/ma_recovery.c
index 75a8f4f4559..af0d9476f2a 100644
--- a/storage/maria/ma_recovery.c
+++ b/storage/maria/ma_recovery.c
@@ -3521,6 +3521,14 @@ void _ma_tmp_disable_logging_for_table(MARIA_HA *info,
{
MARIA_SHARE *share= info->s;
DBUG_ENTER("_ma_tmp_disable_logging_for_table");
+
+ /*
+ We have to ensure that bitmap is flushed, as it's checking
+ that share->now_transactional is set
+ */
+ if (share->now_transactional && share->data_file_type == BLOCK_RECORD)
+ _ma_bitmap_flush_all(share);
+
if (log_incomplete)
{
uchar log_data[FILEID_STORE_SIZE];