summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladislav Vaintroub <wlad@mariadb.com>2019-11-04 18:09:09 +0100
committerVladislav Vaintroub <wlad@mariadb.com>2019-11-07 23:58:44 +0100
commit3d4a2463475437b001fb3837faeca95311f14406 (patch)
tree236780da8b2e1c97e9b5df390b48551c38395131
parent72b0b0a2de68bbb5ef22995dbf73bbf8b1aa3363 (diff)
downloadmariadb-git-bb-10.5-wlad-MDEV-16264.tar.gz
Fix race condition between purge_sys::stop() and purge_sys::resume().bb-10.5-wlad-MDEV-16264
Found by Matthias' tests. Add latch lock that was missing in resume()
-rw-r--r--storage/innobase/trx/trx0purge.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/storage/innobase/trx/trx0purge.cc b/storage/innobase/trx/trx0purge.cc
index cef2100cfa6..dcd755aae38 100644
--- a/storage/innobase/trx/trx0purge.cc
+++ b/storage/innobase/trx/trx0purge.cc
@@ -1358,7 +1358,7 @@ void purge_sys_t::resume()
ut_ad(!srv_undo_sources);
return;
}
-
+ rw_lock_x_lock(&latch);
int32_t paused= m_paused--;
ut_a(paused);
@@ -1369,4 +1369,5 @@ void purge_sys_t::resume()
srv_purge_wakeup();
MONITOR_ATOMIC_INC(MONITOR_PURGE_RESUME_COUNT);
}
+ rw_lock_x_unlock(&latch);
}