From f76d40a9c7f09821b769b46f6219c8b32cca7500 Mon Sep 17 00:00:00 2001 From: obdev Date: Wed, 18 Sep 2024 05:26:10 +0000 Subject: [PATCH] add reset/defense in major_ckm_info::assign & move case to sub dir --- src/share/scheduler/ob_dag_scheduler_config.h | 2 +- .../blocksstable/ob_major_checksum_info.cpp | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/share/scheduler/ob_dag_scheduler_config.h b/src/share/scheduler/ob_dag_scheduler_config.h index d4eb09054..f84f780f8 100644 --- a/src/share/scheduler/ob_dag_scheduler_config.h +++ b/src/share/scheduler/ob_dag_scheduler_config.h @@ -44,7 +44,7 @@ DAG_SCHEDULER_DAG_TYPE_DEF(DAG_TYPE_MINI_MERGE, ObDagPrio::DAG_PRIO_COMPACTION_H true, 3, {"ls_id", "tablet_id", "compaction_scn"}) DAG_SCHEDULER_DAG_TYPE_DEF(DAG_TYPE_MERGE_EXECUTE, ObDagPrio::DAG_PRIO_COMPACTION_MID, ObSysTaskType::SSTABLE_MINOR_MERGE_TASK, "MINOR_EXECUTE", "COMPACTION", true, 3, {"ls_id", "tablet_id", "compaction_scn"}) -DAG_SCHEDULER_DAG_TYPE_DEF(DAG_TYPE_MAJOR_MERGE, ObDagPrio::DAG_PRIO_COMPACTION_LOW, ObSysTaskType::SSTABLE_MAJOR_MERGE_TASK, "MAJOR_MERGE", "COMPACTION", +DAG_SCHEDULER_DAG_TYPE_DEF(DAG_TYPE_MAJOR_MERGE, ObDagPrio::DAG_PRIO_COMPACTION_LOW, ObSysTaskType::SSTABLE_MAJOR_MERGE_TASK, "MAJOR_MERGE/MEDIUM_MERGE", "COMPACTION", true, 3, {"ls_id", "tablet_id", "compaction_scn"}) DAG_SCHEDULER_DAG_TYPE_DEF(DAG_TYPE_CO_MERGE_BATCH_EXECUTE, ObDagPrio::DAG_PRIO_COMPACTION_LOW, ObSysTaskType::SSTABLE_MAJOR_MERGE_TASK, "CO_MERGE_BATCH_EXECUTE", "COMPACTION", false, 5, {"ls_id", "tablet_id", "compaction_scn", "start_cg_idx", "end_cg_idx"}) diff --git a/src/storage/blocksstable/ob_major_checksum_info.cpp b/src/storage/blocksstable/ob_major_checksum_info.cpp index 6b2b56c19..dcff29b28 100644 --- a/src/storage/blocksstable/ob_major_checksum_info.cpp +++ b/src/storage/blocksstable/ob_major_checksum_info.cpp @@ -59,6 +59,7 @@ int ObMajorChecksumInfo::assign( ObArenaAllocator *allocator) { int ret = OB_SUCCESS; + reset(); info_ = other.info_; compaction_scn_ = other.compaction_scn_; if (other.is_empty()) { @@ -73,6 +74,10 @@ int ObMajorChecksumInfo::assign( LOG_WARN("failed to assgin column checksums", KR(ret), K(other)); } } + if (OB_SUCC(ret) && OB_UNLIKELY(!is_valid())) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("ObMajorChecksumInfo is invalid after assign", KR(ret), KPC(this), K(other)); + } return ret; } @@ -83,6 +88,7 @@ int ObMajorChecksumInfo::deep_copy( ObMajorChecksumInfo &dest) const { int ret = OB_SUCCESS; + dest.reset(); dest.info_ = info_; dest.compaction_scn_ = compaction_scn_; if (!is_empty()) { @@ -92,6 +98,10 @@ int ObMajorChecksumInfo::deep_copy( LOG_WARN("failed to deep copy column checksum", KR(ret), K_(column_ckm_struct)); } } + if (OB_SUCC(ret) && OB_UNLIKELY(!dest.is_valid())) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("ObMajorChecksumInfo is invalid after deep copy", KR(ret), KPC(this), K(dest)); + } return ret; } @@ -285,6 +295,10 @@ int ObCOMajorChecksumInfo::init_from_merge_result( K(res.data_column_checksums_[j])); } } // for + if (OB_SUCC(ret) && OB_UNLIKELY(!is_valid())) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("after init from merge result, major checksum info is not valid", KR(ret), KPC(this), K(res)); + } return ret; }