mirror of
https://github.com/codership/wsrep-lib.git
synced 2025-07-30 07:23:07 +03:00
Support for detaching prepared XA transactions
Add support for detaching XA transactions. This is useful for handling the case where the DBMS client has a transaction in prepared state and disconnects. Before disconnect, the DBMS calls the newly introduced client_state::xa_detach(), to cleanup the local transaction and convert it to a high priority transaction. The DBMS may later attempt to terminate the transaction through client_state::commit_by_xid() or client_state::rollback_by_xid(). Also in this patch: - Fix client_state::close() so that it does not rollback transactions in prepared state - Changed class wsrep::xid representation to hold enough information so that DBMS can convert to its native representation - Fix potential infinite loop in server_state::find_streaming_applier(wsrep:xid&) - Append SR keys on prepare fragment and make it pa_unsafe - Handle one phase commit (simply fall back to two phase) - Do not rollback prepared streaming clients in server_state::close_orphaned_transactions()
This commit is contained in:
@ -125,17 +125,17 @@ namespace wsrep
|
||||
|
||||
bool is_xa() const
|
||||
{
|
||||
return !xid_.empty();
|
||||
return !xid_.is_null();
|
||||
}
|
||||
|
||||
void assign_xid(const wsrep::xid& xid)
|
||||
{
|
||||
assert(active());
|
||||
assert(xid_.empty());
|
||||
assert(!is_xa());
|
||||
xid_ = xid;
|
||||
}
|
||||
|
||||
const wsrep::xid xid() const
|
||||
const wsrep::xid& xid() const
|
||||
{
|
||||
return xid_;
|
||||
}
|
||||
@ -144,6 +144,8 @@ namespace wsrep
|
||||
|
||||
int commit_or_rollback_by_xid(const wsrep::xid& xid, bool commit);
|
||||
|
||||
void xa_detach();
|
||||
|
||||
bool pa_unsafe() const { return pa_unsafe_; }
|
||||
void pa_unsafe(bool pa_unsafe) { pa_unsafe_ = pa_unsafe; }
|
||||
|
||||
|
Reference in New Issue
Block a user