diff --git a/be/src/olap/rowset/segment_v2/segment_writer.cpp b/be/src/olap/rowset/segment_v2/segment_writer.cpp index 775d9b5a8a29af..980cd3736489eb 100644 --- a/be/src/olap/rowset/segment_v2/segment_writer.cpp +++ b/be/src/olap/rowset/segment_v2/segment_writer.cpp @@ -904,11 +904,9 @@ Status SegmentWriter::finalize_footer(uint64_t* segment_file_size) { // finish RETURN_IF_ERROR(_file_writer->finalize()); *segment_file_size = _file_writer->bytes_appended(); - return Status::OK(); -} - -Status SegmentWriter::finalize_footer() { - RETURN_IF_ERROR(_write_footer()); + if (*segment_file_size == 0) { + return Status::Corruption("Bad segment, file size = 0"); + } return Status::OK(); } @@ -925,10 +923,7 @@ Status SegmentWriter::finalize(uint64_t* segment_file_size, uint64_t* index_size // write index RETURN_IF_ERROR(finalize_columns_index(index_size)); // write footer - RETURN_IF_ERROR(finalize_footer()); - // finish - RETURN_IF_ERROR(_file_writer->finalize()); - *segment_file_size = _file_writer->bytes_appended(); + RETURN_IF_ERROR(finalize_footer(segment_file_size)); if (timer.elapsed_time() > 5000000000l) { LOG(INFO) << "segment flush consumes a lot time_ns " << timer.elapsed_time() diff --git a/be/src/olap/rowset/segment_v2/segment_writer.h b/be/src/olap/rowset/segment_v2/segment_writer.h index 3d67c869abab31..9133712a8c4ca6 100644 --- a/be/src/olap/rowset/segment_v2/segment_writer.h +++ b/be/src/olap/rowset/segment_v2/segment_writer.h @@ -116,7 +116,6 @@ class SegmentWriter { Status finalize_columns_data(); Status finalize_columns_index(uint64_t* index_size); Status finalize_footer(uint64_t* segment_file_size); - Status finalize_footer(); void init_column_meta(ColumnMetaPB* meta, uint32_t column_id, const TabletColumn& column, TabletSchemaSPtr tablet_schema);