From af4cb18fc94af20fffe30e5ffbe55587a080a8e1 Mon Sep 17 00:00:00 2001 From: Kaijie Chen Date: Wed, 11 Oct 2023 14:35:17 +0800 Subject: [PATCH 1/2] [fix](load) handle Status in beta rowset writer --- be/src/olap/rowset/beta_rowset_writer.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/be/src/olap/rowset/beta_rowset_writer.cpp b/be/src/olap/rowset/beta_rowset_writer.cpp index d36d9d90e7e4a2..58889a158d2ba3 100644 --- a/be/src/olap/rowset/beta_rowset_writer.cpp +++ b/be/src/olap/rowset/beta_rowset_writer.cpp @@ -77,11 +77,12 @@ BetaRowsetWriter::~BetaRowsetWriter() { * when the job is cancelled. Although it is meaningless to continue segcompaction when the job * is cancelled, the objects involved in the job should be preserved during segcompaction to * avoid crashs for memory issues. */ - static_cast(wait_flying_segcompaction()); + WARN_IF_ERROR(wait_flying_segcompaction(), "segment compaction failed"); // TODO(lingbin): Should wrapper exception logic, no need to know file ops directly. - if (!_already_built) { // abnormal exit, remove all files generated - static_cast(_segment_creator.close()); // ensure all files are closed + if (!_already_built) { // abnormal exit, remove all files generated + WARN_IF_ERROR(_segment_creator.close(), + "close segment creator failed"); // ensure all files are closed auto fs = _rowset_meta->fs(); if (fs->type() != io::FileSystemType::LOCAL) { // Remote fs will delete them asynchronously return; @@ -123,7 +124,7 @@ Status BetaRowsetWriter::init(const RowsetWriterContext& rowset_writer_context) std::make_shared(); _context.segment_collector = std::make_shared>(this); _context.file_writer_creator = std::make_shared>(this); - static_cast(_segment_creator.init(_context)); + RETURN_IF_ERROR(_segment_creator.init(_context)); return Status::OK(); } @@ -413,7 +414,7 @@ Status BetaRowsetWriter::add_rowset(RowsetSharedPtr rowset) { _total_index_size += rowset->rowset_meta()->index_disk_size(); _num_segment += rowset->num_segments(); // append key_bounds to current rowset - static_cast(rowset->get_segments_key_bounds(&_segments_encoded_key_bounds)); + RETURN_IF_ERROR(rowset->get_segments_key_bounds(&_segments_encoded_key_bounds)); // TODO update zonemap if (rowset->rowset_meta()->has_delete_predicate()) { _rowset_meta->set_delete_predicate(rowset->rowset_meta()->delete_predicate()); @@ -515,7 +516,8 @@ RowsetSharedPtr BetaRowsetWriter::build() { } if (_segcompaction_worker.get_file_writer()) { - static_cast(_segcompaction_worker.get_file_writer()->close()); + WARN_IF_ERROR(_segcompaction_worker.get_file_writer()->close(), + "close segment compaction worker failed"); } } status = _check_segment_number_limit(); @@ -679,7 +681,7 @@ Status BetaRowsetWriter::_create_segment_writer_for_segcompaction( _context.data_dir, _context.max_rows_per_segment, writer_options, _context.mow_context)); if (_segcompaction_worker.get_file_writer() != nullptr) { - static_cast(_segcompaction_worker.get_file_writer()->close()); + RETURN_IF_ERROR(_segcompaction_worker.get_file_writer()->close()); } _segcompaction_worker.get_file_writer().reset(file_writer.release()); From 6410589f54e358d2800d3de846653065db09a254 Mon Sep 17 00:00:00 2001 From: Kaijie Chen Date: Thu, 12 Oct 2023 11:57:26 +0800 Subject: [PATCH 2/2] fixup --- be/src/olap/rowset/beta_rowset_writer.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/be/src/olap/rowset/beta_rowset_writer.cpp b/be/src/olap/rowset/beta_rowset_writer.cpp index 58889a158d2ba3..6419378cc45102 100644 --- a/be/src/olap/rowset/beta_rowset_writer.cpp +++ b/be/src/olap/rowset/beta_rowset_writer.cpp @@ -516,8 +516,11 @@ RowsetSharedPtr BetaRowsetWriter::build() { } if (_segcompaction_worker.get_file_writer()) { - WARN_IF_ERROR(_segcompaction_worker.get_file_writer()->close(), - "close segment compaction worker failed"); + status = _segcompaction_worker.get_file_writer()->close(); + if (!status.ok()) { + LOG(WARNING) << "close segment compaction worker failed" << status; + return nullptr; + } } } status = _check_segment_number_limit();