diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2021-04-01 09:36:37 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2021-04-01 09:36:37 +0300 |
commit | 7f75acc05c54bb4a2ffd0c38c7171e27c271bdb2 (patch) | |
tree | 3a3e7669223f98fe8d3d3b42333c3cc2fa91c2a6 | |
parent | 147a317e81ca8b132c353e0309db96d7e74637ec (diff) | |
download | mariadb-git-7f75acc05c54bb4a2ffd0c38c7171e27c271bdb2.tar.gz |
MDEV-25313: Assertion pending==log_requests.start... failed
log_flush_notify(): Restore the reload of log_requests.start that was
accidentally removed in commit 8c2e3259c13d1d0a494fb3f9c1e5fb780a193ab1.
Thanks to Elena Stepanova for a test case (repeatedly running FLUSH LOGS
concurrently with InnoDB write transactions).
-rw-r--r-- | storage/innobase/handler/ha_innodb.cc | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index 4cd2fe6429b..7c74d4f8340 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -4506,6 +4506,7 @@ void log_flush_notify(lsn_t flush_lsn) if (auto pending= log_requests.start.load(std::memory_order_acquire)) { mysql_mutex_lock(&log_requests.mutex); + pending= log_requests.start.load(std::memory_order_relaxed); log_flush_notify_and_unlock(pending, flush_lsn); } } |