From 971ab1754d7971be0bf26cd66baf83c6fba41175 Mon Sep 17 00:00:00 2001 From: obdev Date: Mon, 17 Apr 2023 06:41:41 +0000 Subject: [PATCH] fix master failed mysqltest case --- src/storage/compaction/ob_partition_merge_iter.cpp | 9 +++++---- src/storage/compaction/ob_partition_merger.cpp | 11 +++++++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/storage/compaction/ob_partition_merge_iter.cpp b/src/storage/compaction/ob_partition_merge_iter.cpp index 71308eb764..9faa082691 100644 --- a/src/storage/compaction/ob_partition_merge_iter.cpp +++ b/src/storage/compaction/ob_partition_merge_iter.cpp @@ -1244,12 +1244,13 @@ int ObPartitionMinorRowMergeIter::collect_tnode_dml_stat( int ret = OB_SUCCESS; memtable::ObMemtableMultiVersionScanIterator *iter = nullptr; - if (OB_ISNULL(table_)) { - // do nothing + if (OB_UNLIKELY(nullptr == table_ || nullptr == row_iter_)) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("get unexpected null table or null row_iter", KPC(table_), KPC(row_iter_)); } else if (OB_UNLIKELY(!table_->is_data_memtable() || - typeid(row_iter_) != typeid(memtable::ObMemtableMultiVersionScanIterator))) { + typeid(*row_iter_) != typeid(memtable::ObMemtableMultiVersionScanIterator))) { ret = OB_NOT_SUPPORTED; - LOG_WARN("only support to get mt stat from memtable", K(ret), KPC(table_)); + LOG_WARN("only support to get mt stat from tx memtable", K(ret), KPC(table_), KPC(row_iter_)); } else if (OB_ISNULL(iter = static_cast(row_iter_))) { ret = OB_ERR_UNEXPECTED; LOG_WARN("get unexpected null row iter", K(ret), KPC(row_iter_)); diff --git a/src/storage/compaction/ob_partition_merger.cpp b/src/storage/compaction/ob_partition_merger.cpp index dac2b59714..6d4da1862a 100644 --- a/src/storage/compaction/ob_partition_merger.cpp +++ b/src/storage/compaction/ob_partition_merger.cpp @@ -1173,6 +1173,11 @@ int ObPartitionMinorMerger::merge_partition(ObTabletMergeCtx &ctx, const int64_t return ret; } +/* + * TODO(@DanLing) + * Add mysql test case after column store branch is merged into master, + * cause __all_virtual_tablet_stat is on column store. + */ int ObPartitionMinorMerger::collect_merge_stat( const ObMergeType &merge_type, ObPartitionMinorMergeHelper &merge_helper, @@ -1181,9 +1186,11 @@ int ObPartitionMinorMerger::collect_merge_stat( int ret = OB_SUCCESS; ObTransNodeDMLStat tnode_stat; - if (OB_UNLIKELY(!is_mini_merge(merge_type))) { + if (OB_UNLIKELY(!is_mini_merge(merge_type) || !ctx.is_valid())) { ret = OB_INVALID_ARGUMENT; - LOG_WARN("get invalid argument", K(ret), K(merge_type)); + LOG_WARN("get invalid argument", K(ret), K(merge_type), K(ctx)); + } else if (ctx.param_.tablet_id_.is_special_merge_tablet()) { + // do nothing } else if (OB_FAIL(merge_helper.collect_tnode_dml_stat(merge_type, tnode_stat))) { STORAGE_LOG(WARN, "failed to get memtable stat", K(ret)); } else if (tnode_stat.empty()) {