summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2021-04-01 09:36:37 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2021-04-01 09:36:37 +0300
commit7f75acc05c54bb4a2ffd0c38c7171e27c271bdb2 (patch)
tree3a3e7669223f98fe8d3d3b42333c3cc2fa91c2a6
parent147a317e81ca8b132c353e0309db96d7e74637ec (diff)
downloadmariadb-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.cc1
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);
}
}