This is an automated email from the ASF dual-hosted git repository. dataroaring pushed a commit to branch branch-2.0 in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push: new 55d3dd3642a [fix](clone) Increase robustness for clone (#36642) (#37550) 55d3dd3642a is described below commit 55d3dd3642a427f8bfc786355af6683fa3734a50 Author: deardeng <565620...@qq.com> AuthorDate: Tue Jul 9 20:47:42 2024 +0800 [fix](clone) Increase robustness for clone (#36642) (#37550) ## Proposed changes Issue Number: close #xxx <!--Describe your changes.--> --- be/src/olap/single_replica_compaction.cpp | 7 ++++++- be/src/olap/task/engine_clone_task.cpp | 16 ++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/be/src/olap/single_replica_compaction.cpp b/be/src/olap/single_replica_compaction.cpp index f6bd02ed4b7..5c036821307 100644 --- a/be/src/olap/single_replica_compaction.cpp +++ b/be/src/olap/single_replica_compaction.cpp @@ -583,7 +583,12 @@ Status SingleReplicaCompaction::_finish_clone(const string& clone_dir, } // clear clone dir std::filesystem::path clone_dir_path(clone_dir); - std::filesystem::remove_all(clone_dir_path); + std::error_code ec; + std::filesystem::remove_all(clone_dir_path, ec); + if (ec) { + LOG(WARNING) << "failed to remove=" << clone_dir_path << " msg=" << ec.message(); + return Status::IOError("failed to remove {}, due to {}", clone_dir, ec.message()); + } LOG(INFO) << "finish to clone data, clear downloaded data. res=" << res << ", tablet=" << _tablet->full_name() << ", clone_dir=" << clone_dir; return res; diff --git a/be/src/olap/task/engine_clone_task.cpp b/be/src/olap/task/engine_clone_task.cpp index 67206ec40dd..a349d006c98 100644 --- a/be/src/olap/task/engine_clone_task.cpp +++ b/be/src/olap/task/engine_clone_task.cpp @@ -606,7 +606,13 @@ Status EngineCloneTask::_download_files(DataDir* data_dir, const std::string& re /// 2. Call _finish_xx_clone() to revise the tablet meta. Status EngineCloneTask::_finish_clone(Tablet* tablet, const std::string& clone_dir, int64_t committed_version, bool is_incremental_clone) { - Defer remove_clone_dir {[&]() { std::filesystem::remove_all(clone_dir); }}; + Defer remove_clone_dir {[&]() { + std::error_code ec; + std::filesystem::remove_all(clone_dir, ec); + if (ec) { + LOG(WARNING) << "failed to remove=" << clone_dir << " msg=" << ec.message(); + } + }}; // check clone dir existed bool exists = true; @@ -637,7 +643,13 @@ Status EngineCloneTask::_finish_clone(Tablet* tablet, const std::string& clone_d bool contain_binlog = false; RowsetBinlogMetasPB rowset_binlog_metas_pb; if (binlog_metas_file_exists) { - auto binlog_meta_filesize = std::filesystem::file_size(binlog_metas_file); + std::error_code ec; + auto binlog_meta_filesize = std::filesystem::file_size(binlog_metas_file, ec); + if (ec) { + LOG(WARNING) << "get file size error" << ec.message(); + return Status::IOError("can't retrive file_size of {}, due to {}", binlog_metas_file, + ec.message()); + } if (binlog_meta_filesize > 0) { contain_binlog = true; RETURN_IF_ERROR(read_pb(binlog_metas_file, &rowset_binlog_metas_pb)); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org