Fix OB_NOT_RUNNING Error about virtual tables in trans module

This commit is contained in:
lalalafeier
2023-05-25 08:47:19 +00:00
committed by ob-robot
parent 4ea455b9f9
commit 684057dfb3
4 changed files with 24 additions and 16 deletions

View File

@ -53,9 +53,13 @@ int ObGVTxCtxMgrStat::prepare_start_to_read_()
SERVER_LOG(ERROR, "cur row cell is NULL", K(ret));
} else if (OB_FAIL(trans_service_->iterate_tx_ctx_mgr_stat(tx_ctx_mgr_stat_iter_))) {
SERVER_LOG(WARN, "iterate_tx_ctx_mgr_stat error", K(ret));
} else if (!tx_ctx_mgr_stat_iter_.is_ready()) {
SERVER_LOG(WARN, "tx_ctx_mgr_stat_iter_ is not ready");
ret = OB_ERR_UNEXPECTED;
if (OB_NOT_RUNNING == ret || OB_NOT_INIT == ret) {
ret = OB_SUCCESS;
}
}
if (OB_FAIL(ret)) {
} else if (OB_FAIL(tx_ctx_mgr_stat_iter_.set_ready())) {
TRANS_LOG(WARN, "tx_ctx_mgr_stat_iter set ready error", KR(ret));
} else {
start_to_read_ = true;
}

View File

@ -78,6 +78,8 @@ int ObGVTxLockStat::get_next_tx_lock_stat_(ObTxLockStat &tx_lock_stat)
tx_lock_stat_iter_.reset();
if (OB_FAIL(txs_->iterate_tx_lock_stat(ls_id_, tx_lock_stat_iter_))) {
TRANS_LOG(WARN, "iterate_tx_lock_stat error", K(ret), K(ls_id));
} else if (OB_FAIL(tx_lock_stat_iter_.set_ready())) {
TRANS_LOG(WARN, "iterate_tx_lock_stat set ready error", KR(ret));
}
}
} else {
@ -109,18 +111,22 @@ int ObGVTxLockStat::prepare_start_to_read_()
ret = OB_INVALID_ARGUMENT;
} else if (OB_FAIL(txs_->iterate_ls_id(ls_id_iter_))) {
TRANS_LOG(WARN, "iterate ls id error", K(ret));
} else if (!ls_id_iter_.is_ready()) {
TRANS_LOG(WARN, "ls_id_iter is not ready");
ret = OB_ERR_UNEXPECTED;
if (OB_NOT_RUNNING == ret || OB_NOT_INIT == ret) {
ret = OB_SUCCESS;
}
}
if (OB_FAIL(ret)) {
} else if (OB_FAIL(ls_id_iter_.set_ready())) {
TRANS_LOG(WARN, "ls_id_iter set ready error", KR(ret));
} else if (OB_FAIL(ls_id_iter_.get_next(ls_id_))) {
if (OB_ITER_END != ret) {
TRANS_LOG(WARN, "ls_id_iter get next ls id error", K(ret));
}
} else if (OB_FAIL(txs_->iterate_tx_lock_stat(ls_id_, tx_lock_stat_iter_))) {
TRANS_LOG(WARN, "iterate_tx_lock_stat error", K(ret), K(ls_id_));
} else if (!tx_lock_stat_iter_.is_ready()) {
TRANS_LOG(WARN, "ls_id_iter is not ready");
ret = OB_ERR_UNEXPECTED;
// if ls_id_iter_.get_next success, we can believe obTransService is running
} else if (OB_FAIL(tx_lock_stat_iter_.set_ready())) {
TRANS_LOG(WARN, "iterate_tx_lock_stat set ready error", KR(ret));
} else {
start_to_read_ = true;
}

View File

@ -87,6 +87,11 @@ int ObGVTxSchedulerStat::process_curr_tenant(common::ObNewRow *&row)
} else if (!tx_scheduler_stat_iter_.is_ready()) {
if (OB_FAIL(MTL(ObTransService*)->iterate_tx_scheduler_stat(tx_scheduler_stat_iter_))) {
SERVER_LOG(WARN, "iterate transaction scheduler error", KR(ret));
if (OB_NOT_RUNNING == ret || OB_NOT_INIT == ret) {
ret = OB_SUCCESS;
}
}
if (OB_FAIL(ret)) {
} else if (OB_FAIL(tx_scheduler_stat_iter_.set_ready())) {
SERVER_LOG(WARN, "ObTransSchedulerIterator set ready error", KR(ret));
}

View File

@ -2298,8 +2298,6 @@ int ObTransService::iterate_tx_ctx_mgr_stat(ObTxCtxMgrStatIterator &tx_ctx_mgr_s
ret = OB_NOT_RUNNING;
} else if (OB_FAIL(tx_ctx_mgr_.iterate_tx_ctx_mgr_stat(self_, tx_ctx_mgr_stat_iter))) {
TRANS_LOG(WARN, "iterate_tx_ctx_mgr_stat error", KR(ret), K_(self));
} else if (OB_FAIL(tx_ctx_mgr_stat_iter.set_ready())) {
TRANS_LOG(WARN, "tx_ctx_mgr_stat_iter set ready error", KR(ret));
} else {
// do nothing
}
@ -2319,11 +2317,8 @@ int ObTransService::iterate_tx_lock_stat(const share::ObLSID& ls_id,
ret = OB_NOT_RUNNING;
} else if (OB_FAIL(tx_ctx_mgr_.iterate_ls_tx_lock_stat(ls_id, tx_lock_stat_iter))) {
TRANS_LOG(WARN, "iterate_tx_lock_stat error", KR(ret));
} else if (OB_FAIL(tx_lock_stat_iter.set_ready())) {
TRANS_LOG(WARN, "iterate_tx_lock_stat set ready error", KR(ret));
} else {
// do nothing
TRANS_LOG(INFO, "iterate_tx_lock_stat set ready succ", KR(ret));
}
return ret;
@ -2341,8 +2336,6 @@ int ObTransService::iterate_ls_id(ObLSIDIterator &ls_id_iter)
ret = OB_NOT_RUNNING;
} else if (OB_FAIL(tx_ctx_mgr_.iterate_ls_id(ls_id_iter))) {
TRANS_LOG(WARN, "iterate ls id error", KR(ret));
} else if (OB_FAIL(ls_id_iter.set_ready())) {
TRANS_LOG(WARN, "ls_id_iter set ready error", KR(ret));
} else {
// do nothing
}