fix direct load memory leak when an error occurs

This commit is contained in:
obdev
2023-05-09 07:38:36 +00:00
committed by ob-robot
parent 97533a52c0
commit 48fcdf2c45
2 changed files with 18 additions and 18 deletions

View File

@ -848,6 +848,7 @@ int ObTableLoadStore::px_start_trans(const ObTableLoadTransId &trans_id)
ret = OB_NOT_SUPPORTED; ret = OB_NOT_SUPPORTED;
LOG_WARN("not support trans id", KR(ret), K(trans_id), K(param_.session_count_)); LOG_WARN("not support trans id", KR(ret), K(trans_id), K(param_.session_count_));
} else { } else {
LOG_INFO("store px start trans", K(trans_id));
ObTableLoadStoreTrans *trans = nullptr; ObTableLoadStoreTrans *trans = nullptr;
if (OB_FAIL(store_ctx_->start_trans(trans_id, trans))) { if (OB_FAIL(store_ctx_->start_trans(trans_id, trans))) {
LOG_WARN("fail to start trans", KR(ret), K(trans_id)); LOG_WARN("fail to start trans", KR(ret), K(trans_id));

View File

@ -112,7 +112,6 @@ int ObTableDirectInsertService::close_task(const uint64_t table_id,
const int error_code) const int error_code)
{ {
int ret = OB_SUCCESS; int ret = OB_SUCCESS;
if (OB_SUCC(error_code)) {
ObTableLoadTableCtx *table_ctx = nullptr; ObTableLoadTableCtx *table_ctx = nullptr;
ObTableLoadKey key(MTL_ID(), table_id); ObTableLoadKey key(MTL_ID(), table_id);
if (OB_FAIL(ObTableLoadService::get_ctx(key, table_ctx))) { if (OB_FAIL(ObTableLoadService::get_ctx(key, table_ctx))) {
@ -121,16 +120,17 @@ int ObTableDirectInsertService::close_task(const uint64_t table_id,
table::ObTableLoadTransId trans_id; table::ObTableLoadTransId trans_id;
trans_id.segment_id_ = task_id; trans_id.segment_id_ = task_id;
trans_id.trans_gid_ = 1; trans_id.trans_gid_ = 1;
if (OB_SUCC(error_code)) {
ObTableLoadStore store(table_ctx); ObTableLoadStore store(table_ctx);
if (OB_FAIL(store.init())) { if (OB_FAIL(store.init())) {
LOG_WARN("fail to init store", KR(ret)); LOG_WARN("fail to init store", KR(ret));
} else if (OB_FAIL(store.px_finish_trans(trans_id))) { } else if (OB_FAIL(store.px_finish_trans(trans_id))) {
LOG_WARN("fail to finish direct load trans", KR(ret), K(trans_id)); LOG_WARN("fail to finish direct load trans", KR(ret), K(trans_id));
} }
}
if (OB_FAIL(ret)) { if (OB_FAIL(ret)) {
int tmp_ret = OB_SUCCESS; if (OB_FAIL(ObTableLoadStore::px_abandon_trans(table_ctx, trans_id))) {
if (OB_TMP_FAIL(ObTableLoadStore::px_abandon_trans(table_ctx, trans_id))) { LOG_WARN("fail to abandon direct load trans", KR(ret), K(trans_id));
LOG_WARN("fail to abandon direct load trans", KR(tmp_ret), K(trans_id));
} }
} }
} }
@ -138,7 +138,6 @@ int ObTableDirectInsertService::close_task(const uint64_t table_id,
ObTableLoadService::put_ctx(table_ctx); ObTableLoadService::put_ctx(table_ctx);
table_ctx = nullptr; table_ctx = nullptr;
} }
}
return ret; return ret;
} }
} // namespace sql } // namespace sql