From e9c359425c0d7b07aeb166637058812198458b01 Mon Sep 17 00:00:00 2001 From: JiahuaChen Date: Tue, 21 May 2024 10:10:59 +0000 Subject: [PATCH] Do sweep if mark meet 4013 --- src/storage/blocksstable/ob_block_manager.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/storage/blocksstable/ob_block_manager.cpp b/src/storage/blocksstable/ob_block_manager.cpp index 771cfe5d8..3101a4a6d 100644 --- a/src/storage/blocksstable/ob_block_manager.cpp +++ b/src/storage/blocksstable/ob_block_manager.cpp @@ -1006,8 +1006,14 @@ void ObBlockManager::mark_and_sweep() } else if (0 == mark_info.count()) { skip_mark = true; LOG_INFO("no block alloc/free, no need to mark blocks", K(ret), K(mark_info.count())); - } else if (OB_FAIL(mark_macro_blocks(mark_info, macro_id_set, tmp_status))) {//mark - LOG_WARN("fail to mark macro blocks", K(ret)); + } else if (OB_FAIL(mark_macro_blocks(mark_info, macro_id_set, tmp_status))) { + if (OB_ALLOCATE_MEMORY_FAILED == ret) { + LOG_INFO("mark blocks meet memory issue, still countinue sweep to lease compaction space"); + ret = OB_SUCCESS; + skip_mark = true; + } else { + LOG_WARN("fail to mark macro blocks", K(ret)); + } } if (OB_FAIL(ret)) {