diff --git a/be/src/io/fs/err_utils.cpp b/be/src/io/fs/err_utils.cpp index fbae0ff927d668..d4c5c7ad3e0fe8 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 18a6727c4ffe76..4a7c597879a7ec 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);