Fixed assert in WSREP if one started with --wsrep_provider=.. --wsrep_on=OFF
Assert was: mariadbd: /my/maria-10.6/wsrep-lib/src/client_state.cpp:256: int wsrep::client_state::after_statement(): Assertion `state() == s_exec' The reason was because of two faults: - A missing test for WSREP(thd) when checking wsrep_after_statement(() - THD->wsrep_cs().state was set to s_idle instead of s_none
This commit is contained in:
parent
c03841ec0e
commit
e14b682636
@ -3781,7 +3781,8 @@ mysql_execute_command(THD *thd)
|
|||||||
thd->transaction.stmt.mark_trans_did_ddl();
|
thd->transaction.stmt.mark_trans_did_ddl();
|
||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
/* Clean up the previous transaction on implicit commit */
|
/* Clean up the previous transaction on implicit commit */
|
||||||
if (wsrep_thd_is_local(thd) && wsrep_after_statement(thd))
|
if (WSREP_NNULL(thd) && wsrep_thd_is_local(thd) &&
|
||||||
|
wsrep_after_statement(thd))
|
||||||
{
|
{
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
@ -3855,7 +3856,7 @@ mysql_execute_command(THD *thd)
|
|||||||
Do not start transaction for stored procedures, it will be handled
|
Do not start transaction for stored procedures, it will be handled
|
||||||
internally in SP processing.
|
internally in SP processing.
|
||||||
*/
|
*/
|
||||||
if (WSREP(thd) &&
|
if (WSREP_NNULL(thd) &&
|
||||||
wsrep_thd_is_local(thd) &&
|
wsrep_thd_is_local(thd) &&
|
||||||
lex->sql_command != SQLCOM_BEGIN &&
|
lex->sql_command != SQLCOM_BEGIN &&
|
||||||
lex->sql_command != SQLCOM_CALL &&
|
lex->sql_command != SQLCOM_CALL &&
|
||||||
|
@ -407,8 +407,10 @@ static inline void wsrep_after_apply(THD* thd)
|
|||||||
static inline void wsrep_open(THD* thd)
|
static inline void wsrep_open(THD* thd)
|
||||||
{
|
{
|
||||||
DBUG_ENTER("wsrep_open");
|
DBUG_ENTER("wsrep_open");
|
||||||
if (WSREP_PROVIDER_EXISTS)
|
if (WSREP_ON_)
|
||||||
{
|
{
|
||||||
|
/* WSREP_PROVIDER_EXISTS_ cannot be set if WSREP_ON_ is not set */
|
||||||
|
DBUG_ASSERT(WSREP_PROVIDER_EXISTS_);
|
||||||
thd->wsrep_cs().open(wsrep::client_id(thd->thread_id));
|
thd->wsrep_cs().open(wsrep::client_id(thd->thread_id));
|
||||||
thd->wsrep_cs().debug_log_level(wsrep_debug);
|
thd->wsrep_cs().debug_log_level(wsrep_debug);
|
||||||
if (!thd->wsrep_applier && thd->variables.wsrep_trx_fragment_size)
|
if (!thd->wsrep_applier && thd->variables.wsrep_trx_fragment_size)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user