diff --git a/src/storage/tx/ob_trans_service.cpp b/src/storage/tx/ob_trans_service.cpp index b30a301660..ebb141452e 100755 --- a/src/storage/tx/ob_trans_service.cpp +++ b/src/storage/tx/ob_trans_service.cpp @@ -769,8 +769,7 @@ int ObTransService::register_mds_into_tx(ObTxDesc &tx_desc, time_guard.click("register in ctx begin"); do { - if (OB_FAIL(register_mds_into_ctx(*(arg.tx_desc_), ls_id, type, buf, buf_len, - register_flag))) { + if (OB_FAIL(register_mds_into_ctx_(*(arg.tx_desc_), ls_id, type, buf, buf_len, register_flag))) { TRANS_LOG(WARN, "register msd into ctx failed", K(ret)); if (OB_EAGAIN == ret) { if (ObTimeUtil::current_time() >= tx_desc.expire_ts_) { @@ -857,12 +856,12 @@ int ObTransService::register_mds_into_tx(ObTxDesc &tx_desc, return ret; } -int ObTransService::register_mds_into_ctx(ObTxDesc &tx_desc, - const ObLSID &ls_id, - const ObTxDataSourceType &type, - const char *buf, - const int64_t buf_len, - const ObRegisterMdsFlag ®ister_flag) +int ObTransService::register_mds_into_ctx_(ObTxDesc &tx_desc, + const ObLSID &ls_id, + const ObTxDataSourceType &type, + const char *buf, + const int64_t buf_len, + const ObRegisterMdsFlag ®ister_flag) { int ret = OB_SUCCESS; ObStoreCtx store_ctx; @@ -877,22 +876,13 @@ int ObTransService::register_mds_into_ctx(ObTxDesc &tx_desc, } else if (OB_FAIL(get_write_store_ctx(tx_desc, snapshot, write_flag, store_ctx, true))) { TRANS_LOG(WARN, "get store ctx failed", KR(ret), K(tx_desc), K(ls_id)); } else { - do { - memtable::ObMvccWriteGuard guard; - if (OB_FAIL(guard.write_auth(store_ctx))) { - TRANS_LOG(WARN, "write auth failed", KR(ret), K(tx_desc), K(ls_id)); - } else { - ObPartTransCtx *ctx = store_ctx.mvcc_acc_ctx_.tx_ctx_; - if (OB_ISNULL(ctx)) { - ret = OB_ERR_UNEXPECTED; - TRANS_LOG(WARN, "unexpected null ptr", KR(ret), K(tx_desc), K(ls_id), K(type)); - } else if (OB_FAIL(ctx->register_multi_data_source( - type, buf, buf_len, false /* try lock */, register_flag))) { - TRANS_LOG(WARN, "register multi source data failed", KR(ret), K(tx_desc), K(ls_id), - K(type)); - } - } - } while (0); + ObPartTransCtx *ctx = store_ctx.mvcc_acc_ctx_.tx_ctx_; + if (OB_ISNULL(ctx)) { + ret = OB_ERR_UNEXPECTED; + TRANS_LOG(WARN, "unexpected null ptr", KR(ret), K(tx_desc), K(ls_id), K(type)); + } else if (OB_FAIL(ctx->register_multi_data_source(type, buf, buf_len, false /*try lock*/, register_flag))) { + TRANS_LOG(WARN, "register multi source data failed", KR(ret), K(tx_desc), K(ls_id), K(type), K(register_flag)); + } int tmp_ret = OB_SUCCESS; if (OB_SUCCESS != (tmp_ret = revert_store_ctx(store_ctx))) { TRANS_LOG(WARN, "revert store ctx failed", KR(tmp_ret), K(tx_desc), K(ls_id), K(type)); diff --git a/src/storage/tx/ob_trans_service.h b/src/storage/tx/ob_trans_service.h index de574d1853..e2033097e7 100644 --- a/src/storage/tx/ob_trans_service.h +++ b/src/storage/tx/ob_trans_service.h @@ -202,12 +202,6 @@ public: const int64_t buf_len, const int64_t request_id = 0, const ObRegisterMdsFlag ®ister_flag = ObRegisterMdsFlag()); - int register_mds_into_ctx(ObTxDesc &tx_desc, - const share::ObLSID &ls_id, - const ObTxDataSourceType &type, - const char *buf, - const int64_t buf_len, - const ObRegisterMdsFlag ®ister_flag); ObTxELRUtil &get_tx_elr_util() { return elr_util_; } #ifdef ENABLE_DEBUG_LOG transaction::ObDefensiveCheckMgr *get_defensive_check_mgr() { return defensive_check_mgr_; } @@ -215,6 +209,12 @@ public: private: void check_env_(); bool can_create_ctx_(const int64_t trx_start_ts, const common::ObTsWindows &changing_leader_windows); + int register_mds_into_ctx_(ObTxDesc &tx_desc, + const share::ObLSID &ls_id, + const ObTxDataSourceType &type, + const char *buf, + const int64_t buf_len, + const ObRegisterMdsFlag ®ister_flag); private: int handle_redo_sync_task_(ObDupTableRedoSyncTask *task, bool &need_release_task); int handle_dup_pre_commit_task_(ObPreCommitTask *task, bool &need_release_task);