aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2024-01-31 14:23:12 +0100
committerGitHub <[email protected]>2024-01-31 14:23:12 +0100
commit5cf15227e1cb41ba870786b833d27abbe5f9d966 (patch)
tree2369245d3aaa756c2fd76f7a3af5a3a377fa6381
parentimprove oplog export logging (#644) (diff)
downloadzen-5cf15227e1cb41ba870786b833d27abbe5f9d966.tar.xz
zen-5cf15227e1cb41ba870786b833d27abbe5f9d966.zip
Actually thow exception if we can't parse the jobid when starting async job (#645)
Return system error code on exception throw in zen command Clean up HttpClient::Response::ErrorMessage to remove redundant ": "
-rw-r--r--CHANGELOG.md3
-rw-r--r--src/zen/cmds/projectstore_cmd.cpp2
-rw-r--r--src/zen/zen.cpp8
-rw-r--r--src/zenhttp/httpclient.cpp9
4 files changed, 18 insertions, 4 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f7e692a64..776c33b77 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,11 @@
##
- Improvement: More details in oplog import/export logs
- Improvement: Switch from Download to Get when fetching Refs from Jupiter as they can't be resumed anyway and streaming to disk is redundant
+- Improvement: Return system error code on exception throw in zen command
+- Improvement: Clean up HttpClient::Response::ErrorMessage to remove redundant ": "
- Bugfix: Make sure we clear read callback when doing Put in HttpClient to avoid timeout due to not sending data when reusing sessions
- Bugfix: Respect `--ignore-missing-attachments` in `oplog-export` command when loose file is missing on disk
+- Bugfix: Actually throw exception if we can't parse the JobId when starting async job
## 5.4.0
- Improvement: Add details when reading from BasicFile fails (number of bytes read is not expected size)
diff --git a/src/zen/cmds/projectstore_cmd.cpp b/src/zen/cmds/projectstore_cmd.cpp
index 510e700d3..0fe7b14eb 100644
--- a/src/zen/cmds/projectstore_cmd.cpp
+++ b/src/zen/cmds/projectstore_cmd.cpp
@@ -67,7 +67,7 @@ namespace {
std::optional<uint64_t> JobIdMaybe = ParseInt<uint64_t>(JobIdText);
if (!JobIdMaybe)
{
- Result.ThrowError("invalid job id"sv);
+ throw std::runtime_error(fmt::format("invalid job id returned, received '{}'", JobIdText));
}
std::string LastCurrentOp;
diff --git a/src/zen/zen.cpp b/src/zen/zen.cpp
index 10d2f5593..39f3f1f78 100644
--- a/src/zen/zen.cpp
+++ b/src/zen/zen.cpp
@@ -534,11 +534,17 @@ main(int argc, char** argv)
return 9;
}
+ catch (std::system_error& Ex)
+ {
+ printf("System Error: %s\n", Ex.what());
+
+ return Ex.code() ? Ex.code().value() : 10;
+ }
catch (std::exception& Ex)
{
printf("Error: %s\n", Ex.what());
- return 10;
+ return 11;
}
return 0;
diff --git a/src/zenhttp/httpclient.cpp b/src/zenhttp/httpclient.cpp
index cc8a3f033..9811e5814 100644
--- a/src/zenhttp/httpclient.cpp
+++ b/src/zenhttp/httpclient.cpp
@@ -1089,11 +1089,16 @@ HttpClient::Response::ErrorMessage(std::string_view Prefix) const
}
else if (StatusCode != HttpResponseCode::ImATeapot && (int)StatusCode)
{
- return fmt::format("{}: HTTP error {} {} ({})", Prefix, (int)StatusCode, zen::ToString(StatusCode), ToText());
+ return fmt::format("{}{}HTTP error {} {} ({})",
+ Prefix,
+ Prefix.empty() ? ""sv : ": "sv,
+ (int)StatusCode,
+ zen::ToString(StatusCode),
+ ToText());
}
else
{
- return fmt::format("{}: {}", Prefix, "unknown error");
+ return fmt::format("{}{}unknown error", Prefix, Prefix.empty() ? ""sv : ": "sv);
}
}