From c099ccdbd026d91fb407b5fa4029b535fab51941 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 19 Feb 2025 09:25:41 +0800 Subject: [PATCH] branch-2.1: [improve](load) print error string in local fs error messages #47918 (#48010) Cherry-picked from #47918 Co-authored-by: Kaijie Chen --- be/src/io/fs/err_utils.cpp | 28 +++++++++++++++------------- be/src/io/fs/err_utils.h | 1 + 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/be/src/io/fs/err_utils.cpp b/be/src/io/fs/err_utils.cpp index fbae0ff927..d4c5c7ad3e 100644 --- a/be/src/io/fs/err_utils.cpp +++ b/be/src/io/fs/err_utils.cpp @@ -78,36 +78,38 @@ std::string glob_err_to_str(int code) { } Status localfs_error(const std::error_code& ec, std::string_view msg) { + auto message = fmt::format("{}: {}", msg, ec.message()); if (ec == std::errc::io_error) { - return Status::Error(msg); + return Status::Error(message); } else if (ec == std::errc::no_such_file_or_directory) { - return Status::Error(msg); + return Status::Error(message); } else if (ec == std::errc::file_exists) { - return Status::Error(msg); + return Status::Error(message); } else if (ec == std::errc::no_space_on_device) { - return Status::Error(msg); + return Status::Error(message); } else if (ec == std::errc::permission_denied) { - return Status::Error(msg); + return Status::Error(message); } else { - return Status::Error("{}: {}", msg, ec.message()); + return Status::Error(message); } } Status localfs_error(int posix_errno, std::string_view msg) { + char buf[1024]; + auto message = fmt::format("{}: {}", msg, strerror_r(errno, buf, 1024)); switch (posix_errno) { case EIO: - return Status::Error(msg); + return Status::Error(message); case ENOENT: - return Status::Error(msg); + return Status::Error(message); case EEXIST: - return Status::Error(msg); + return Status::Error(message); case ENOSPC: - return Status::Error(msg); + return Status::Error(message); case EACCES: - return Status::Error(msg); + return Status::Error(message); default: - return Status::Error("{}: {}", msg, - std::strerror(posix_errno)); + return Status::Error(message); } } diff --git a/be/src/io/fs/err_utils.h b/be/src/io/fs/err_utils.h index 18a6727c4f..4a7c597879 100644 --- a/be/src/io/fs/err_utils.h +++ b/be/src/io/fs/err_utils.h @@ -31,6 +31,7 @@ namespace io { std::string errno_to_str(); std::string errcode_to_str(const std::error_code& ec); +int error_code_to_errno(const std::error_code& ec); std::string hdfs_error(); std::string glob_err_to_str(int code);