[CP] [dblink][tx-free-route] check tx free route for dblink trans.

This commit is contained in:
jw-guo
2024-03-28 12:50:40 +00:00
committed by ob-robot
parent 7441aa172c
commit f6b003dac0

View File

@ -58,6 +58,9 @@ int ObTMService::tm_rm_start(ObExecContext &exec_ctx,
if (NULL == xa_service || NULL == my_session || NULL == plan_ctx) { if (NULL == xa_service || NULL == my_session || NULL == plan_ctx) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
LOG_WARN("unexpected param", K(ret), KP(xa_service), KP(my_session)); LOG_WARN("unexpected param", K(ret), KP(xa_service), KP(my_session));
} else if (!my_session->is_inner() && my_session->is_txn_free_route_temp()) {
ret = OB_TRANS_FREE_ROUTE_NOT_SUPPORTED;
LOG_WARN("not support tx free route for dblink trans");
} else if (OB_FAIL(my_session->get_tx_timeout(tx_timeout))) { } else if (OB_FAIL(my_session->get_tx_timeout(tx_timeout))) {
LOG_ERROR("fail to get trans timeout ts", K(ret)); LOG_ERROR("fail to get trans timeout ts", K(ret));
} else if (my_session->get_in_transaction()) { } else if (my_session->get_in_transaction()) {
@ -174,6 +177,9 @@ int ObTMService::tm_commit(ObExecContext &exec_ctx,
if (NULL == xa_service || NULL == my_session || NULL == tx_desc) { if (NULL == xa_service || NULL == my_session || NULL == tx_desc) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
LOG_WARN("unexpected param", K(ret), KP(xa_service), KP(my_session), KP(tx_desc)); LOG_WARN("unexpected param", K(ret), KP(xa_service), KP(my_session), KP(tx_desc));
} else if (!my_session->is_inner() && my_session->is_txn_free_route_temp()) {
ret = OB_TRANS_FREE_ROUTE_NOT_SUPPORTED;
LOG_WARN("not support tx free route for dblink trans");
} else { } else {
ObSQLSessionInfo::LockGuard data_lock_guard(my_session->get_thread_data_lock()); ObSQLSessionInfo::LockGuard data_lock_guard(my_session->get_thread_data_lock());
tx_id = tx_desc->tid(); tx_id = tx_desc->tid();
@ -221,6 +227,9 @@ int ObTMService::tm_rollback(ObExecContext &exec_ctx,
if (NULL == xa_service || NULL == my_session || NULL == tx_desc) { if (NULL == xa_service || NULL == my_session || NULL == tx_desc) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
LOG_WARN("unexpected param", K(ret), KP(xa_service), KP(my_session), KP(tx_desc)); LOG_WARN("unexpected param", K(ret), KP(xa_service), KP(my_session), KP(tx_desc));
} else if (!my_session->is_inner() && my_session->is_txn_free_route_temp()) {
ret = OB_TRANS_FREE_ROUTE_NOT_SUPPORTED;
LOG_WARN("not support tx free route for dblink trans");
} else { } else {
ObSQLSessionInfo::LockGuard data_lock_guard(my_session->get_thread_data_lock()); ObSQLSessionInfo::LockGuard data_lock_guard(my_session->get_thread_data_lock());
tx_id = tx_desc->tid(); tx_id = tx_desc->tid();
@ -261,6 +270,9 @@ int ObTMService::recover_tx_for_callback(const ObTransID &tx_id,
} else if (NULL == xa_service || NULL == my_session) { } else if (NULL == xa_service || NULL == my_session) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
LOG_WARN("unexpected param", K(ret), KP(xa_service), KP(my_session)); LOG_WARN("unexpected param", K(ret), KP(xa_service), KP(my_session));
} else if (!my_session->is_inner() && my_session->is_txn_free_route_temp()) {
ret = OB_TRANS_FREE_ROUTE_NOT_SUPPORTED;
LOG_WARN("not support tx free route for dblink trans");
} else if (my_session->get_in_transaction()) { } else if (my_session->get_in_transaction()) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
LOG_WARN("unexpected session", K(ret), K(tx_id), K(tx_desc->tid())); LOG_WARN("unexpected session", K(ret), K(tx_id), K(tx_desc->tid()));