Commit c4f8ccc0 authored by Sergei Golubchik's avatar Sergei Golubchik

MDEV-21954 mysqld got signal 11 Fatal signal 6 while backtracing on parallel show global status

protect global toku_global_status_rows with a mutex
parent 54c521ca
...@@ -26,6 +26,7 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. ...@@ -26,6 +26,7 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved.
#include "hatoku_hton.h" #include "hatoku_hton.h"
#include "PerconaFT/src/ydb.h" #include "PerconaFT/src/ydb.h"
#include <mutex>
#define TOKU_METADB_NAME "tokudb_meta" #define TOKU_METADB_NAME "tokudb_meta"
...@@ -239,6 +240,7 @@ tokudb::thread::rwlock_t tokudb_hton_initialized_lock; ...@@ -239,6 +240,7 @@ tokudb::thread::rwlock_t tokudb_hton_initialized_lock;
static SHOW_VAR *toku_global_status_variables = NULL; static SHOW_VAR *toku_global_status_variables = NULL;
static uint64_t toku_global_status_max_rows; static uint64_t toku_global_status_max_rows;
static TOKU_ENGINE_STATUS_ROW_S* toku_global_status_rows = NULL; static TOKU_ENGINE_STATUS_ROW_S* toku_global_status_rows = NULL;
static std::mutex toku_global_status_rows_mutex;
static void handle_ydb_error(int error) { static void handle_ydb_error(int error) {
switch (error) { switch (error) {
...@@ -1902,6 +1904,7 @@ static int show_tokudb_vars(TOKUDB_UNUSED(THD* thd), ...@@ -1902,6 +1904,7 @@ static int show_tokudb_vars(TOKUDB_UNUSED(THD* thd),
const int panic_string_len = 1024; const int panic_string_len = 1024;
char panic_string[panic_string_len] = {'\0'}; char panic_string[panic_string_len] = {'\0'};
fs_redzone_state redzone_state; fs_redzone_state redzone_state;
const std::lock_guard<std::mutex> lock(toku_global_status_rows_mutex);
uint64_t num_rows; uint64_t num_rows;
error = db_env->get_engine_status( error = db_env->get_engine_status(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment