From eb982630d5b8c76f71b6b09a3ee57f7e8914e8ae Mon Sep 17 00:00:00 2001 From: TieweiFang Date: Fri, 10 May 2024 17:41:59 +0800 Subject: [PATCH 1/2] fix --- be/src/vec/runtime/vorc_writer.cpp | 2 +- be/src/vec/runtime/vparquet_writer.cpp | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/be/src/vec/runtime/vorc_writer.cpp b/be/src/vec/runtime/vorc_writer.cpp index c719268c9b8151..dff2d3da75b0f8 100644 --- a/be/src/vec/runtime/vorc_writer.cpp +++ b/be/src/vec/runtime/vorc_writer.cpp @@ -69,8 +69,8 @@ VOrcOutputStream::~VOrcOutputStream() { void VOrcOutputStream::close() { if (!_is_closed) { + Defer defer {[this] { _is_closed = true; }}; Status st = _file_writer->close(); - _is_closed = true; if (!st.ok()) { LOG(WARNING) << "close orc output stream failed: " << st; throw std::runtime_error(st.to_string()); diff --git a/be/src/vec/runtime/vparquet_writer.cpp b/be/src/vec/runtime/vparquet_writer.cpp index 8d986dac326f74..a56e64e1fc0e4a 100644 --- a/be/src/vec/runtime/vparquet_writer.cpp +++ b/be/src/vec/runtime/vparquet_writer.cpp @@ -99,14 +99,13 @@ arrow::Result ParquetOutputStream::Tell() const { arrow::Status ParquetOutputStream::Close() { if (_is_closed) { - return arrow::Status::OK(); - } - Status st = _file_writer->close(); - if (!st.ok()) { - LOG(WARNING) << "close parquet output stream failed: " << st; - return arrow::Status::IOError(st.to_string()); + Defer defer {[this] { _is_closed = true; }}; + Status st = _file_writer->close(); + if (!st.ok()) { + LOG(WARNING) << "close parquet output stream failed: " << st; + return arrow::Status::IOError(st.to_string()); + } } - _is_closed = true; return arrow::Status::OK(); } @@ -942,6 +941,7 @@ int64_t VParquetWriterWrapper::written_len() { Status VParquetWriterWrapper::close() { try { if (_rg_writer != nullptr) { + LOG(INFO) << "--ftw: _rg_writer->Close()"; _rg_writer->Close(); _rg_writer = nullptr; } From f8d629039e940d5ebe9737f26ef0d3f7ca3e305c Mon Sep 17 00:00:00 2001 From: TieweiFang Date: Wed, 15 May 2024 15:42:59 +0800 Subject: [PATCH 2/2] fix2 --- be/src/vec/runtime/vparquet_writer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/be/src/vec/runtime/vparquet_writer.cpp b/be/src/vec/runtime/vparquet_writer.cpp index a56e64e1fc0e4a..b5f73e2ca18ef6 100644 --- a/be/src/vec/runtime/vparquet_writer.cpp +++ b/be/src/vec/runtime/vparquet_writer.cpp @@ -98,7 +98,7 @@ arrow::Result ParquetOutputStream::Tell() const { } arrow::Status ParquetOutputStream::Close() { - if (_is_closed) { + if (!_is_closed) { Defer defer {[this] { _is_closed = true; }}; Status st = _file_writer->close(); if (!st.ok()) {