[master][tx-route] mark static changed when tx switch from IDLE to ABORT
This commit is contained in:
9
deps/oblib/src/lib/utility/ob_tracepoint.h
vendored
9
deps/oblib/src/lib/utility/ob_tracepoint.h
vendored
@ -672,10 +672,13 @@ class EventTable
|
||||
EN_FETCH_TABLE_INFO_RPC = 1112,
|
||||
// END OF STORAGE HA - 1101 - 2000
|
||||
|
||||
// Transaction // 2001 - 2100
|
||||
// Transaction free route
|
||||
EN_TX_FREE_ROUTE_UPDATE_STATE_ERROR = 1150,
|
||||
EN_TX_FREE_ROUTE_ENCODE_STATE_ERROR = 1151,
|
||||
EN_TX_FREE_ROUTE_STATE_SIZE = 1152,
|
||||
EN_TX_FREE_ROUTE_UPDATE_STATE_ERROR = 2001,
|
||||
EN_TX_FREE_ROUTE_ENCODE_STATE_ERROR = 2002,
|
||||
EN_TX_FREE_ROUTE_STATE_SIZE = 2003,
|
||||
// Transaction common
|
||||
EN_TX_RESULT_INCOMPLETE = 2011,
|
||||
|
||||
EVENT_TABLE_MAX = SIZE_OF_EVENT_TABLE
|
||||
};
|
||||
|
||||
@ -864,7 +864,7 @@ int ObSqlTransControl::end_stmt(ObExecContext &exec_ctx, const bool rollback)
|
||||
OX (ObTransDeadlockDetectorAdapter::maintain_deadlock_info_when_end_stmt(exec_ctx, rollback));
|
||||
auto &tx_result = session->get_trans_result();
|
||||
if (OB_FAIL(ret)) {
|
||||
} else if (tx_result.is_incomplete()) {
|
||||
} else if (OB_E(EventTable::EN_TX_RESULT_INCOMPLETE, session->get_sessid()) tx_result.is_incomplete()) {
|
||||
if (!rollback) {
|
||||
LOG_ERROR("trans result incomplete, but rollback not issued");
|
||||
}
|
||||
|
||||
@ -557,6 +557,10 @@ int ObTransService::abort_tx_(ObTxDesc &tx, const int cause, const bool cleanup)
|
||||
TRANS_LOG(WARN, "try abort tx which has decided",
|
||||
K(ret), K(tx), K(cause));
|
||||
} else {
|
||||
// TODO: refactor state switch and put this to there
|
||||
if (ObTxDesc::State::IDLE == tx.state_) {
|
||||
tx.state_change_flags_.STATIC_CHANGED_ = 1;
|
||||
}
|
||||
tx.state_ = ObTxDesc::State::IN_TERMINATE;
|
||||
tx.abort_cause_ = cause;
|
||||
abort_participants_(tx);
|
||||
|
||||
Reference in New Issue
Block a user