diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2020-02-06 14:52:11 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2020-02-06 14:52:11 +0200 |
commit | cd3bdc09dbcec30926abda69b2277657f5fcb08d (patch) | |
tree | a8eca935338aad2db60528645a9fe79faa0f97f1 | |
parent | 6d214415c9547593fa0fd22b25fc4f6cd1c6cd65 (diff) | |
download | mariadb-git-cd3bdc09dbcec30926abda69b2277657f5fcb08d.tar.gz |
MDEV-18582: Fix a race condition
srv_export_innodb_status(): While gathering
innodb_mem_adaptive_hash, acquire btr_search_latches[i]
in order to prevent a race condition with buffer pool resizing.
-rw-r--r-- | storage/innobase/srv/srv0srv.cc | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/storage/innobase/srv/srv0srv.cc b/storage/innobase/srv/srv0srv.cc index e027c03784a..a16d37e7e32 100644 --- a/storage/innobase/srv/srv0srv.cc +++ b/storage/innobase/srv/srv0srv.cc @@ -1156,6 +1156,7 @@ srv_export_innodb_status(void) ulint mem_adaptive_hash = 0; ut_ad(btr_search_sys->hash_tables); for (ulong i = 0; i < btr_ahi_parts; i++) { + rw_lock_s_lock(btr_search_latches[i]); hash_table_t* ht = btr_search_sys->hash_tables[i]; ut_ad(ht); @@ -1167,6 +1168,7 @@ srv_export_innodb_status(void) mem_adaptive_hash += mem_heap_get_size(ht->heap) + ht->n_cells * sizeof(hash_cell_t); + rw_lock_s_unlock(btr_search_latches[i]); } export_vars.innodb_mem_adaptive_hash = mem_adaptive_hash; #endif |