Not try to finish index builder after errors (#9426)
Summary: Right now, when error happens in block based table reader, we still call index_builder->Finish(), this causes one assertion in one stress test: db_stress: table/block_based/index_builder.cc:202: virtual rocksdb::Status rocksdb::PartitionedIndexBuilder::Finish(rocksdb::IndexBuilder::IndexBlocks*, const rocksdb::BlockHandle&): Assertion `sub_index_builder_ == nullptr' failed. This unlikely causes any corruption as we would finally abandon the file, but the code is confusing and it is hard to understand what would happen. Changing the behavior. Pull Request resolved: https://github.com/facebook/rocksdb/pull/9426 Test Plan: Run existing tests Reviewed By: pdillinger Differential Revision: D33751929 fbshipit-source-id: 3c916b9444a4171010fc53df40496570bef5ae7a
This commit is contained in:
parent
fa52376117
commit
5d10a53b42
@ -1583,6 +1583,9 @@ void BlockBasedTableBuilder::WriteFilterBlock(
|
||||
|
||||
void BlockBasedTableBuilder::WriteIndexBlock(
|
||||
MetaIndexBuilder* meta_index_builder, BlockHandle* index_block_handle) {
|
||||
if (!ok()) {
|
||||
return;
|
||||
}
|
||||
IndexBuilder::IndexBlocks index_blocks;
|
||||
auto index_builder_status = rep_->index_builder->Finish(&index_blocks);
|
||||
if (index_builder_status.IsIncomplete()) {
|
||||
|
Loading…
Reference in New Issue
Block a user