Commit 7dd74fa3 authored by Nirbhay Choubey's avatar Nirbhay Choubey

MDEV-6481: Yum Upgrade on CentOS 6.5 causes instant

crash of MariaDB/Galera

mysqld crashes during startup when its started with --wsrep-recover
(mysqld_safe.sh). The problem was that during server startup "wsrep"
handle is not initialized for --wsrep-recover and since the condition
to register wsrep hton depended only on 'wsrep_on' global/session
variables (WSREP(thd) macro), it can eventually get registered and
calls to wsrep handle's functions (commit, rollback, etc.) can be
made (SIGSEGV!).

Fixed by adding a check for "wsrep" pointer in WSREP(thd) macro
(added by lp:1367173). Additionally, a check for WSREP(thd)
(instead of checking the availability of wsrep provider) has been
added before invoking wsrep handle's commit & rollback functions.
parent b197066c
......@@ -210,9 +210,9 @@ static int wsrep_rollback(handlerton *hton, THD *thd, bool all)
}
if ((all || !thd_test_options(thd, OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN)) &&
(thd->variables.wsrep_on && thd->wsrep_conflict_state != MUST_REPLAY))
thd->wsrep_conflict_state != MUST_REPLAY)
{
if (wsrep->post_rollback(wsrep, &thd->wsrep_ws_handle))
if (WSREP(thd) && wsrep->post_rollback(wsrep, &thd->wsrep_ws_handle))
{
DBUG_PRINT("wsrep", ("setting rollback fail"));
WSREP_ERROR("settting rollback fail: thd: %llu SQL: %s",
......@@ -252,13 +252,11 @@ int wsrep_commit(handlerton *hton, THD *thd, bool all)
Transaction didn't go through wsrep->pre_commit() so just roll back
possible changes to clean state.
*/
if (WSREP_PROVIDER_EXISTS) {
if (wsrep->post_rollback(wsrep, &thd->wsrep_ws_handle))
{
DBUG_PRINT("wsrep", ("setting rollback fail"));
WSREP_ERROR("settting rollback fail: thd: %llu SQL: %s",
(long long)thd->real_id, thd->query());
}
if (WSREP(thd) && wsrep->post_rollback(wsrep, &thd->wsrep_ws_handle))
{
DBUG_PRINT("wsrep", ("setting rollback fail"));
WSREP_ERROR("settting rollback fail: thd: %llu SQL: %s",
(long long)thd->real_id, thd->query());
}
wsrep_cleanup_transaction(thd);
}
......
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