1
0
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:
Daniele Sciascia
2024-01-19 14:20:05 +01:00
committed by Jan Lindström
parent a5d95f0175
commit 6a17207b7f
4 changed files with 21 additions and 2 deletions

View File

@ -82,6 +82,11 @@ namespace db
return false;
}
bool is_prepared_xa() override
{
return false;
}
bool is_xa_rollback() override
{
return false;

View File

@ -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

View File

@ -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();

View File

@ -176,6 +176,11 @@ namespace wsrep
return false;
}
bool is_prepared_xa() WSREP_OVERRIDE
{
return false;
}
bool is_xa_rollback() WSREP_OVERRIDE
{
return false;