This is an automated email from the ASF dual-hosted git repository.

kxiao pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git

commit 666769796f9550c600757b67f481e2b3e5f86082
Author: Kaijie Chen <c...@apache.org>
AuthorDate: Tue Sep 12 11:04:10 2023 +0800

    [fix](load) check segment file size when finalize (#24196)
---
 be/src/olap/rowset/segment_v2/segment_writer.cpp | 13 ++++---------
 be/src/olap/rowset/segment_v2/segment_writer.h   |  1 -
 2 files changed, 4 insertions(+), 10 deletions(-)

diff --git a/be/src/olap/rowset/segment_v2/segment_writer.cpp 
b/be/src/olap/rowset/segment_v2/segment_writer.cpp
index e1bbe03f1a..8e998fb561 100644
--- a/be/src/olap/rowset/segment_v2/segment_writer.cpp
+++ b/be/src/olap/rowset/segment_v2/segment_writer.cpp
@@ -900,11 +900,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();
 }
 
@@ -921,10 +919,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 0b17ed4faa..276de1a430 100644
--- a/be/src/olap/rowset/segment_v2/segment_writer.h
+++ b/be/src/olap/rowset/segment_v2/segment_writer.h
@@ -119,7 +119,6 @@ public:
     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);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to