diff --git a/src/storage/compaction/ob_medium_compaction_func.cpp b/src/storage/compaction/ob_medium_compaction_func.cpp index d8dcd1036f..286b1274af 100644 --- a/src/storage/compaction/ob_medium_compaction_func.cpp +++ b/src/storage/compaction/ob_medium_compaction_func.cpp @@ -745,21 +745,28 @@ int ObMediumCompactionScheduleFunc::freeze_memtable_to_get_medium_info() } else { memtable::ObMemtable *memtable = nullptr; bool receive_medium_info = false; + bool has_medium_info = false; for (int i = 0; OB_SUCC(ret) && i < memtables.count(); ++i) { if (OB_ISNULL(memtable = static_cast(memtables.at(i)))) { ret = OB_ERR_UNEXPECTED; LOG_WARN("memtable is null", K(ret), K(i), KPC(memtables.at(i)), K(memtable)); } else if (memtable->has_multi_source_data_unit(memtable::MultiSourceDataUnitType::MEDIUM_COMPACTION_INFO)) { - receive_medium_info = true; - break; + has_medium_info = true; + if (memtable->is_active_memtable()) { + receive_medium_info = true; + break; + } } } // end of for - if (OB_SUCC(ret) && receive_medium_info) { + if (OB_FAIL(ret)) { + } else if (receive_medium_info) { if (OB_FAIL(MTL(ObTenantFreezer *)->tablet_freeze(tablet_.get_tablet_meta().tablet_id_, false/*force_freeze*/))) { if (OB_TABLE_NOT_EXIST != ret) { LOG_WARN("failed to freeze tablet", K(ret), KPC(this)); } } + } else if (has_medium_info) { + LOG_INFO("received medium info, the memtable is frozen, no need to freeze tablet again", K(ret), K(tablet_)); } } return ret; diff --git a/src/storage/compaction/ob_tenant_tablet_scheduler.cpp b/src/storage/compaction/ob_tenant_tablet_scheduler.cpp index 340797ccbc..effbec878c 100644 --- a/src/storage/compaction/ob_tenant_tablet_scheduler.cpp +++ b/src/storage/compaction/ob_tenant_tablet_scheduler.cpp @@ -1023,7 +1023,7 @@ int ObTenantTabletScheduler::schedule_all_tablets_medium() tenant_merge_finish = false; if (OB_SIZE_OVERFLOW == tmp_ret) { break; - } else if (OB_LS_NOT_EXIST != ret) { + } else if (OB_LS_NOT_EXIST != tmp_ret) { LOG_WARN("failed to schedule ls merge", K(tmp_ret), KPC(ls)); } } else { diff --git a/src/storage/ob_tenant_tablet_stat_mgr.cpp b/src/storage/ob_tenant_tablet_stat_mgr.cpp index db1c37f019..8ae3f5a294 100644 --- a/src/storage/ob_tenant_tablet_stat_mgr.cpp +++ b/src/storage/ob_tenant_tablet_stat_mgr.cpp @@ -465,8 +465,8 @@ void ObTenantTabletStatMgr::destroy() { ObBucketWLockAllGuard lock_guard(bucket_lock_); stream_map_.destroy(); - stream_pool_.destroy(); lru_list_.reset(); + stream_pool_.destroy(); report_cursor_ = 0; pending_cursor_ = 0; report_tg_id_ = 0;