fix builder trim empty roots when rewriting macro blocks
This commit is contained in:
@ -828,7 +828,22 @@ TEST_F(TestIndexTree, test_empty_index_tree)
|
|||||||
ASSERT_EQ(OB_SUCCESS, data_writer.open(data_desc.get_desc(), data_seq));
|
ASSERT_EQ(OB_SUCCESS, data_writer.open(data_desc.get_desc(), data_seq));
|
||||||
// do not insert any data
|
// do not insert any data
|
||||||
ASSERT_EQ(OB_SUCCESS, data_writer.close());
|
ASSERT_EQ(OB_SUCCESS, data_writer.close());
|
||||||
|
ASSERT_EQ(1, sstable_builder.roots_.count());
|
||||||
ObSSTableMergeRes res;
|
ObSSTableMergeRes res;
|
||||||
|
ret = sstable_builder.close(res);
|
||||||
|
ASSERT_EQ(0, sstable_builder.roots_.count());
|
||||||
|
ASSERT_EQ(OB_SUCCESS, ret);
|
||||||
|
ASSERT_TRUE(res.root_desc_.is_empty());
|
||||||
|
|
||||||
|
// test rebuild macro blocks
|
||||||
|
ASSERT_EQ(OB_SUCCESS, data_writer.open(data_desc.get_desc(), data_seq));
|
||||||
|
// do not insert any data
|
||||||
|
ASSERT_EQ(OB_SUCCESS, data_writer.close());
|
||||||
|
ASSERT_EQ(1, sstable_builder.roots_.count());
|
||||||
|
ObSSTableIndexBuilder::ObMacroMetaIter macro_iter;
|
||||||
|
sstable_builder.init_meta_iter(macro_iter);
|
||||||
|
ASSERT_EQ(0, sstable_builder.roots_.count());
|
||||||
|
|
||||||
ret = sstable_builder.close(res);
|
ret = sstable_builder.close(res);
|
||||||
ASSERT_EQ(OB_SUCCESS, ret);
|
ASSERT_EQ(OB_SUCCESS, ret);
|
||||||
ASSERT_TRUE(res.root_desc_.is_empty());
|
ASSERT_TRUE(res.root_desc_.is_empty());
|
||||||
|
|||||||
@ -689,7 +689,10 @@ int ObSSTableIndexBuilder::init_meta_iter(ObMacroMetaIter &iter)
|
|||||||
if (IS_NOT_INIT) {
|
if (IS_NOT_INIT) {
|
||||||
ret = OB_NOT_INIT;
|
ret = OB_NOT_INIT;
|
||||||
STORAGE_LOG(WARN, "invalid sstable builder", K(ret), K_(is_inited));
|
STORAGE_LOG(WARN, "invalid sstable builder", K(ret), K_(is_inited));
|
||||||
} else if (FALSE_IT(sort_roots())) {
|
} else if (OB_FAIL(trim_empty_roots())) {
|
||||||
|
STORAGE_LOG(WARN, "fail to trim empty roots", K(ret));
|
||||||
|
} else if (OB_FAIL(sort_roots())) {
|
||||||
|
STORAGE_LOG(WARN, "fail to sort roots", K(ret));
|
||||||
} else if (OB_FAIL(iter.init(roots_, index_store_desc_.get_desc().is_cg()))) {
|
} else if (OB_FAIL(iter.init(roots_, index_store_desc_.get_desc().is_cg()))) {
|
||||||
STORAGE_LOG(WARN, "fail to init iter", K(ret));
|
STORAGE_LOG(WARN, "fail to init iter", K(ret));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user