free slice_writer and slice_store earlier
This commit is contained in:
@ -1756,14 +1756,14 @@ int ObTabletDirectLoadMgr::close_sstable_slice(
|
||||
ObTabletObjLoadHelper::free(arena_allocator, storage_schema);
|
||||
}
|
||||
if (OB_NOT_NULL(slice_writer)) {
|
||||
if (is_data_direct_load(direct_load_type_) && slice_writer->need_column_store()) {
|
||||
if (OB_SUCC(ret) && is_data_direct_load(direct_load_type_) && slice_writer->need_column_store()) {
|
||||
//ignore, free after rescan
|
||||
} else {
|
||||
int tmp_ret = OB_SUCCESS;
|
||||
if (OB_TMP_FAIL(sqc_build_ctx_.slice_mgr_map_.erase_refactored(slice_info.slice_id_))) {
|
||||
LOG_ERROR("erase failed", K(ret), K(tmp_ret), K(slice_info));
|
||||
} else {
|
||||
LOG_INFO("erase a slice writer", KP(slice_writer), K(sqc_build_ctx_.slice_mgr_map_.size()));
|
||||
LOG_INFO("erase a slice writer", K(ret), KP(slice_writer), K(sqc_build_ctx_.slice_mgr_map_.size()));
|
||||
slice_writer->~ObDirectLoadSliceWriter();
|
||||
sqc_build_ctx_.slice_writer_allocator_.free(slice_writer);
|
||||
slice_writer = nullptr;
|
||||
|
||||
@ -1139,6 +1139,9 @@ int ObDirectLoadSliceWriter::fill_column_group(const ObStorageSchema *storage_sc
|
||||
// 3. close writers
|
||||
if (OB_FAIL(cur_writer->close())) {
|
||||
LOG_WARN("close co ddl writer failed", K(ret));
|
||||
} else {
|
||||
// 4. reset datum store (if fail, datum store will free when ~ObDirectLoadSliceWriter())
|
||||
cur_datum_store->reset();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user