diff options
author | Teemu Ollakka <teemu.ollakka@galeracluster.com> | 2019-07-25 16:41:45 +0300 |
---|---|---|
committer | Teemu Ollakka <teemu.ollakka@galeracluster.com> | 2019-08-29 16:35:57 +0300 |
commit | b9cbb42bbffe839f41112b129238d846f3c27a59 (patch) | |
tree | ba0c8fb0737b7dbace8ea4e5eaa3cb3427de11a6 /sql/wsrep_server_service.h | |
parent | 5bb8945a3ae96c8b1e12c0418638eb2416fad0e4 (diff) | |
download | mariadb-git-bb-10.4-sysprg.tar.gz |
MDEV-19826 10.4 seems to crash with "pool-of-threads"bb-10.4-sysprg
MariaDB 10.4 was crashing when thread-handling was set to
pool-of-threads and wsrep was enabled.
There were two apparent reasons for the crash:
- Connection handling in threadpool_common.cc was missing calls to
control wsrep client state.
- Thread specific storage which contains thread variables (THR_KEY_mysys)
was not handled appropriately by wsrep patch when pool-of-threads
was configured.
This patch addresses the above issues in the following way:
- Wsrep client state open/close was moved in thd_prepare_connection() and
end_connection() to have common handling for one-thread-per-connection
and pool-of-threads.
- Thread local storage handling in wsrep patch was reworked by introducing
set of wsrep_xxx_threadvars() calls which replace calls to
THD store_globals()/reset_globals() and deal with thread handling
specifics internally.
Wsrep-lib was updated to version which relaxes internal concurrency
related sanity checks.
Rollback code from wsrep_rollback_process() was extracted to separate calls
for better readability.
Post rollback thread was removed as it was completely unused.
Diffstat (limited to 'sql/wsrep_server_service.h')
-rw-r--r-- | sql/wsrep_server_service.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sql/wsrep_server_service.h b/sql/wsrep_server_service.h index b8f1f009cde..6336fe2c473 100644 --- a/sql/wsrep_server_service.h +++ b/sql/wsrep_server_service.h @@ -77,5 +77,14 @@ private: Wsrep_server_state& m_server_state; }; +/** + Helper method to create new streaming applier. + + @param orig_thd Original thd context to copy operation context from. + @param ctx Context string for debug logging. + */ +class Wsrep_applier_service; +Wsrep_applier_service* +wsrep_create_streaming_applier(THD *orig_thd, const char *ctx); #endif /* WSREP_SERVER_SERVICE */ |