diff options
author | Monty <monty@mariadb.org> | 2018-05-15 11:46:55 +0300 |
---|---|---|
committer | Monty <monty@mariadb.org> | 2018-05-15 11:46:55 +0300 |
commit | 2b749a7bf4f6a6d70f05e8e4b42d088b397adea8 (patch) | |
tree | 6f81ed3e36863c24b492702eec05703b2fceae29 /storage/maria/ma_recovery.c | |
parent | 318097bb8f6e12c546b5dcd287416158209dbb39 (diff) | |
download | mariadb-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.c | 8 |
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]; |