mirror of
https://github.com/codership/wsrep-lib.git
synced 2025-07-30 07:23:07 +03:00
Add method client_service::is_prepared_xa()
This commit is contained in:
committed by
Jan Lindström
parent
a5d95f0175
commit
6a17207b7f
@ -82,6 +82,11 @@ namespace db
|
||||
return false;
|
||||
}
|
||||
|
||||
bool is_prepared_xa() override
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool is_xa_rollback() override
|
||||
{
|
||||
return false;
|
||||
|
@ -194,6 +194,16 @@ namespace wsrep
|
||||
*/
|
||||
virtual bool is_explicit_xa() = 0;
|
||||
|
||||
/**
|
||||
* Returns true if the client has an ongoing XA transaction
|
||||
* in prepared state.
|
||||
* Notice: one could simply check if wsrep::transaction is
|
||||
* in s_prepared state. However, wsrep::transaction does not
|
||||
* transition to prepared state for read-only / empty
|
||||
* transactions.
|
||||
*/
|
||||
virtual bool is_prepared_xa() = 0;
|
||||
|
||||
/**
|
||||
* Returns true if the currently executing command is
|
||||
* a rollback for XA. This is used to avoid setting a
|
||||
|
@ -68,8 +68,7 @@ void wsrep::client_state::close()
|
||||
keep_command_error_ = false;
|
||||
lock.unlock();
|
||||
if (transaction_.active() &&
|
||||
(mode_ != m_local ||
|
||||
transaction_.state() != wsrep::transaction::s_prepared))
|
||||
(mode_ != m_local || !client_service_.is_prepared_xa()))
|
||||
{
|
||||
client_service_.bf_rollback();
|
||||
transaction_.after_statement();
|
||||
|
@ -176,6 +176,11 @@ namespace wsrep
|
||||
return false;
|
||||
}
|
||||
|
||||
bool is_prepared_xa() WSREP_OVERRIDE
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool is_xa_rollback() WSREP_OVERRIDE
|
||||
{
|
||||
return false;
|
||||
|
Reference in New Issue
Block a user