From 3c66d1a97bda1fb97b76741544df66b2021e91f1 Mon Sep 17 00:00:00 2001 From: JiahuaChen Date: Tue, 15 Nov 2022 12:08:00 +0000 Subject: [PATCH] Revert iter object by upper layer --- src/storage/ls/ob_ls_tablet_service.cpp | 7 ++----- src/storage/ls/ob_ls_tablet_service.h | 5 ++--- src/storage/tx_storage/ob_access_service.cpp | 8 +++----- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/storage/ls/ob_ls_tablet_service.cpp b/src/storage/ls/ob_ls_tablet_service.cpp index 18f940de64..a19a754709 100644 --- a/src/storage/ls/ob_ls_tablet_service.cpp +++ b/src/storage/ls/ob_ls_tablet_service.cpp @@ -711,7 +711,7 @@ void ObLSTabletService::report_tablet_to_rs( } } -int ObLSTabletService::table_scan(ObTableScanIterator &iter, ObTableScanParam ¶m, ObNewRowIterator *&result) +int ObLSTabletService::table_scan(ObTableScanIterator &iter, ObTableScanParam ¶m) { int ret = OB_SUCCESS; NG_TRACE(S_table_scan_begin); @@ -737,16 +737,13 @@ int ObLSTabletService::table_scan(ObTableScanIterator &iter, ObTableScanParam &p if (!is_same) { ret = OB_REPLICA_NOT_READABLE; LOG_WARN("ls is not allow to read", K(ret), KPC(ls_), KP(&iter)); - } else { - // result should be assigned at the last - result = &iter; } } NG_TRACE(S_table_scan_end); return ret; } -int ObLSTabletService::table_rescan(ObTableScanParam ¶m, ObNewRowIterator *&result) +int ObLSTabletService::table_rescan(ObTableScanParam ¶m, ObNewRowIterator *result) { int ret = OB_SUCCESS; NG_TRACE(S_table_rescan_begin); diff --git a/src/storage/ls/ob_ls_tablet_service.h b/src/storage/ls/ob_ls_tablet_service.h index 0451070498..e4ba1cb88c 100644 --- a/src/storage/ls/ob_ls_tablet_service.h +++ b/src/storage/ls/ob_ls_tablet_service.h @@ -275,11 +275,10 @@ public: // DAS interface int table_scan( ObTableScanIterator &iter, - ObTableScanParam ¶m, - common::ObNewRowIterator *&result); + ObTableScanParam ¶m); int table_rescan( ObTableScanParam ¶m, - common::ObNewRowIterator *&result); + common::ObNewRowIterator *result); int insert_rows( ObStoreCtx &ctx, const ObDMLBaseParam &dml_param, diff --git a/src/storage/tx_storage/ob_access_service.cpp b/src/storage/tx_storage/ob_access_service.cpp index 69d396794d..11eca2fc2d 100644 --- a/src/storage/tx_storage/ob_access_service.cpp +++ b/src/storage/tx_storage/ob_access_service.cpp @@ -229,6 +229,8 @@ int ObAccessService::table_scan( } else if (OB_ISNULL(iter = common::sop_borrow(ObTableScanIterator))) { ret = OB_ERR_UNEXPECTED; LOG_WARN("alloc table scan iterator fail", K(ret)); + } else if (FALSE_IT(result = iter)) { + // upper layer responsible for releasing iter object } else if (OB_FAIL(check_read_allowed_(ls_id, data_tablet_id, access_type, @@ -243,15 +245,11 @@ int ObAccessService::table_scan( } else if (OB_ISNULL(tablet_service = ls->get_tablet_svr())) { ret = OB_ERR_UNEXPECTED; LOG_ERROR("tablet service should not be null.", K(ret), K(ls_id)); - } else if (OB_FAIL(tablet_service->table_scan(*iter, param, result))) { + } else if (OB_FAIL(tablet_service->table_scan(*iter, param))) { LOG_WARN("Fail to scan table, ", K(ret), K(ls_id), K(param)); } else { NG_TRACE(storage_table_scan_end); } - if (OB_FAIL(ret) && OB_NOT_NULL(iter)) { - iter->reset(); - common::sop_return(ObTableScanIterator, iter); - } return ret; }