check continuous logic macro block id on building index tree
This commit is contained in:
@ -670,6 +670,7 @@ int ObSSTableIndexBuilder::merge_index_tree(ObSSTableMergeRes &res)
|
|||||||
} else {
|
} else {
|
||||||
const int64_t curr_logical_version = index_store_desc_.get_logical_version();
|
const int64_t curr_logical_version = index_store_desc_.get_logical_version();
|
||||||
ObIndexBlockRowDesc row_desc(data_desc);
|
ObIndexBlockRowDesc row_desc(data_desc);
|
||||||
|
ObLogicMacroBlockId prev_logic_id;
|
||||||
for (int64_t i = 0; OB_SUCC(ret) && i < roots_.count(); ++i) {
|
for (int64_t i = 0; OB_SUCC(ret) && i < roots_.count(); ++i) {
|
||||||
ObMacroMetasArray *macro_metas = roots_[i]->macro_metas_;
|
ObMacroMetasArray *macro_metas = roots_[i]->macro_metas_;
|
||||||
for (int64_t j = 0; OB_SUCC(ret) && j < macro_metas->count(); ++j) {
|
for (int64_t j = 0; OB_SUCC(ret) && j < macro_metas->count(); ++j) {
|
||||||
@ -677,8 +678,15 @@ int ObSSTableIndexBuilder::merge_index_tree(ObSSTableMergeRes &res)
|
|||||||
if (OB_ISNULL(macro_meta)) {
|
if (OB_ISNULL(macro_meta)) {
|
||||||
ret = OB_ERR_UNEXPECTED;
|
ret = OB_ERR_UNEXPECTED;
|
||||||
STORAGE_LOG(WARN, "unexpected null macro meta", K(ret), K(j), KPC(roots_.at(i)));
|
STORAGE_LOG(WARN, "unexpected null macro meta", K(ret), K(j), KPC(roots_.at(i)));
|
||||||
|
} else if (OB_UNLIKELY(macro_meta->get_logic_id() == prev_logic_id)) {
|
||||||
|
// Since we rely on upper stream of sstable writing process to ensure the uniqueness of logic id
|
||||||
|
// and we don't want more additional memory/time consumption, we only check continuous ids here
|
||||||
|
ret = OB_ERR_UNEXPECTED;
|
||||||
|
STORAGE_LOG(ERROR, "unexpected duplicate logic macro id", K(ret), KPC(macro_meta), K(prev_logic_id));
|
||||||
} else if (OB_FAIL(index_builder_.append_row(*macro_meta, row_desc))) {
|
} else if (OB_FAIL(index_builder_.append_row(*macro_meta, row_desc))) {
|
||||||
STORAGE_LOG(WARN, "fail to append row", K(ret), KPC(macro_meta), K(j), KPC(roots_.at(i)));
|
STORAGE_LOG(WARN, "fail to append row", K(ret), KPC(macro_meta), K(j), KPC(roots_.at(i)));
|
||||||
|
} else {
|
||||||
|
prev_logic_id = macro_meta->get_logic_id();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user