From 556b47cc6222f46cb13bbe9c8ca2518e27ad8c25 Mon Sep 17 00:00:00 2001 From: renju96 Date: Mon, 29 Apr 2024 11:59:19 +0000 Subject: [PATCH] Fix cancel of direct_load_mgr --- .../ddl/ob_direct_insert_sstable_ctx_new.cpp | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/storage/ddl/ob_direct_insert_sstable_ctx_new.cpp b/src/storage/ddl/ob_direct_insert_sstable_ctx_new.cpp index 9ec139916..05a8194e8 100644 --- a/src/storage/ddl/ob_direct_insert_sstable_ctx_new.cpp +++ b/src/storage/ddl/ob_direct_insert_sstable_ctx_new.cpp @@ -1860,20 +1860,25 @@ int ObTabletDirectLoadMgr::calc_cg_range(ObArray &sor return ret; } +struct CancelSliceWriterMapFn +{ +public: + CancelSliceWriterMapFn() {} + int operator () (hash::HashMapPair &entry) { + int ret = OB_SUCCESS; + if (nullptr != entry.second) { + LOG_INFO("slice writer cancel", K(&entry.second), "slice_id", entry.first); + entry.second->cancel(); + } + return ret; + } +}; + int ObTabletDirectLoadMgr::cancel() { - int ret = OB_SUCCESS; - for (ObTabletDirectLoadBuildCtx::SLICE_MGR_MAP::const_iterator iter = sqc_build_ctx_.slice_mgr_map_.begin(); - OB_SUCC(ret) && iter != sqc_build_ctx_.slice_mgr_map_.end(); ++iter) { - ObDirectLoadSliceWriter *cur_slice = iter->second; - if (OB_ISNULL(cur_slice)) { - ret = OB_INVALID_ARGUMENT; - LOG_WARN("invalid argument", K(ret), KP(cur_slice)); - } else { - cur_slice->cancel(); - } - } - return ret; + CancelSliceWriterMapFn cancel_map_fn; + sqc_build_ctx_.slice_mgr_map_.foreach_refactored(cancel_map_fn); + return OB_SUCCESS; } int ObTabletDirectLoadMgr::close_sstable_slice(