[bug] Sia provider error responses are not being logged #30

This commit is contained in:
Scott E. Graves 2024-12-31 13:12:49 -06:00
parent c69818fed6
commit 5b5ac0937c

View File

@ -69,6 +69,15 @@ auto sia_provider::create_directory_impl(const std::string &api_path,
put_file.path = "/api/worker/objects" + api_path + "/";
put_file.query["bucket"] = get_bucket(get_sia_config());
std::string error_data;
put_file.response_handler = [&error_data](auto &&data, long response_code) {
if (response_code == http_error_codes::ok) {
return;
}
error_data = std::string(data.begin(), data.end());
};
long response_code{};
stop_type stop_requested{};
if (not get_comm().make_request(put_file, response_code, stop_requested)) {
@ -79,8 +88,9 @@ auto sia_provider::create_directory_impl(const std::string &api_path,
}
if (response_code != http_error_codes::ok) {
utils::error::raise_api_path_error(function_name, api_path, response_code,
"failed to create directory");
utils::error::raise_api_path_error(
function_name, api_path, response_code,
fmt::format("failed to create directory|response|{}", error_data));
return api_error::comm_error;
}
@ -290,11 +300,15 @@ auto sia_provider::get_object_info(const std::string &api_path,
get.path = "/api/bus/objects" + api_path;
get.query["bucket"] = get_bucket(get_sia_config());
get.response_handler = [&object_info](const data_buffer &data,
long response_code) {
std::string error_data;
get.response_handler = [&error_data, &object_info](auto &&data,
long response_code) {
if (response_code == http_error_codes::ok) {
object_info = nlohmann::json::parse(data.begin(), data.end());
return;
}
error_data = std::string(data.begin(), data.end());
};
long response_code{};
@ -308,8 +322,9 @@ auto sia_provider::get_object_info(const std::string &api_path,
}
if (response_code != http_error_codes::ok) {
utils::error::raise_api_path_error(function_name, api_path, response_code,
"failed to get object info");
utils::error::raise_api_path_error(
function_name, api_path, response_code,
fmt::format("failed to get object info|response|{}", error_data));
return api_error::comm_error;
}
@ -331,11 +346,15 @@ auto sia_provider::get_object_list(const std::string &api_path,
get.path = "/api/bus/objects" + api_path + "/";
get.query["bucket"] = get_bucket(get_sia_config());
get.response_handler = [&object_list](const data_buffer &data,
long response_code) {
std::string error_data;
get.response_handler = [&error_data, &object_list](auto &&data,
long response_code) {
if (response_code == http_error_codes::ok) {
object_list = nlohmann::json::parse(data.begin(), data.end());
return;
}
error_data = std::string(data.begin(), data.end());
};
long response_code{};
@ -348,8 +367,9 @@ auto sia_provider::get_object_list(const std::string &api_path,
}
if (response_code != http_error_codes::ok) {
utils::error::raise_api_path_error(function_name, api_path, response_code,
"failed to get object list");
utils::error::raise_api_path_error(
function_name, api_path, response_code,
fmt::format("failed to get object list|response|{}", error_data));
return false;
}
@ -365,12 +385,16 @@ auto sia_provider::get_total_drive_space() const -> std::uint64_t {
get.path = "/api/autopilot/config";
get.query["bucket"] = get_bucket(get_sia_config());
json config_data{};
get.response_handler = [&config_data](const data_buffer &data,
long response_code) {
json config_data;
std::string error_data;
get.response_handler = [&error_data, &config_data](auto &&data,
long response_code) {
if (response_code == http_error_codes::ok) {
config_data = nlohmann::json::parse(data.begin(), data.end());
return;
}
error_data = std::string(data.begin(), data.end());
};
long response_code{};
@ -380,8 +404,10 @@ auto sia_provider::get_total_drive_space() const -> std::uint64_t {
}
if (response_code != http_error_codes::ok) {
utils::error::raise_error(function_name, response_code,
"failed to get total drive space");
utils::error::raise_api_path_error(
function_name, api_path, response_code,
fmt::format("failed to get total drive space|response|{}",
error_data));
return 0U;
}
@ -466,12 +492,16 @@ auto sia_provider::is_online() const -> bool {
get.path = "/api/bus/consensus/state";
get.query["bucket"] = get_bucket(get_sia_config());
json state_data{};
get.response_handler = [&state_data](const data_buffer &data,
long response_code) {
std::string error_data;
json state_data;
get.response_handler = [&error_data, &state_data](auto &&data,
long response_code) {
if (response_code == http_error_codes::ok) {
state_data = nlohmann::json::parse(data.begin(), data.end());
return;
}
error_data = std::string(data.begin(), data.end());
};
long response_code{};
@ -483,8 +513,10 @@ auto sia_provider::is_online() const -> bool {
}
if (response_code != http_error_codes::ok) {
utils::error::raise_error(function_name, response_code,
"failed to determine if provider is online");
utils::error::raise_api_path_error(
function_name, api_path, response_code,
fmt::format("failed to determine if provider is online|response|{}",
error_data));
return false;
}
@ -510,8 +542,9 @@ auto sia_provider::read_file_bytes(const std::string &api_path,
offset,
offset + size - 1U,
}};
get.response_handler = [&buffer](const data_buffer &data,
long /*response_code*/) { buffer = data; };
get.response_handler = [&buffer](auto &&data, long /* response_code */) {
buffer = data;
};
auto res = api_error::comm_error;
for (std::uint32_t idx = 0U;