From a5a2d2fa2842c69d24029d6e0dd141a77179a385 Mon Sep 17 00:00:00 2001 From: Gavin Chou <gavin@selectdb.com> Date: Thu, 14 Nov 2024 16:26:39 +0800 Subject: [PATCH] [opt](s3filewriter) Optimize exception handling when put object (#43809) we should not continue to put object if state is not satisfied. --- be/src/io/fs/s3_file_writer.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/be/src/io/fs/s3_file_writer.cpp b/be/src/io/fs/s3_file_writer.cpp index e40b9e171eb08f..7a06ce22074621 100644 --- a/be/src/io/fs/s3_file_writer.cpp +++ b/be/src/io/fs/s3_file_writer.cpp @@ -379,7 +379,14 @@ Status S3FileWriter::_set_upload_to_remote_less_than_buffer_size() { } void S3FileWriter::_put_object(UploadFileBuffer& buf) { - DCHECK(state() != State::CLOSED) << fmt::format("state is {}", state()); + if (state() == State::CLOSED) { + DCHECK(state() != State::CLOSED) + << "state=" << (int)state() << " path=" << _obj_storage_path_opts.path.native(); + LOG_WARNING("failed to put object because file closed, file path {}", + _obj_storage_path_opts.path.native()); + buf.set_status(Status::InternalError<false>("try to put closed file")); + return; + } const auto& client = _obj_client->get(); if (nullptr == client) { buf.set_status(Status::InternalError<false>("invalid obj storage client"));