diff options
| author | Dan Engelbrecht <[email protected]> | 2025-03-18 10:22:52 +0100 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2025-03-18 10:22:52 +0100 |
| commit | 4dc972bdaf752676426550b2eed500a9b7dcc4f5 (patch) | |
| tree | 3e2083ae9cccc82929e124182fc0b11a0378bfaf /src | |
| parent | If a chunk or block write operation results in more than one completed chunk ... (diff) | |
| download | zen-4dc972bdaf752676426550b2eed500a9b7dcc4f5.tar.xz zen-4dc972bdaf752676426550b2eed500a9b7dcc4f5.zip | |
improved reporting on async error (#312)
* report async errors as individual errors
Diffstat (limited to 'src')
| -rw-r--r-- | src/zen/cmds/builds_cmd.cpp | 9 | ||||
| -rw-r--r-- | src/zenutil/include/zenutil/parallellwork.h | 16 |
2 files changed, 17 insertions, 8 deletions
diff --git a/src/zen/cmds/builds_cmd.cpp b/src/zen/cmds/builds_cmd.cpp index 7e3f5345f..11efc42ec 100644 --- a/src/zen/cmds/builds_cmd.cpp +++ b/src/zen/cmds/builds_cmd.cpp @@ -4564,7 +4564,6 @@ namespace { std::move(CompressedPart), DiskStats, WriteChunkStats); - if (!AbortFlag) { WritePartsComplete++; @@ -8315,6 +8314,14 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) return AbortFlag ? 13 : 0; } } + catch (const ParallellWorkException& Ex) + { + for (const std::string& Error : Ex.m_Errors) + { + ZEN_ERROR("{}", Error); + } + return 3; + } catch (const std::exception& Ex) { ZEN_ERROR("{}", Ex.what()); diff --git a/src/zenutil/include/zenutil/parallellwork.h b/src/zenutil/include/zenutil/parallellwork.h index 79798fc8d..8ea77c65d 100644 --- a/src/zenutil/include/zenutil/parallellwork.h +++ b/src/zenutil/include/zenutil/parallellwork.h @@ -9,6 +9,14 @@ #include <atomic> +class ParallellWorkException : public std::runtime_error +{ +public: + explicit ParallellWorkException(std::vector<std::string>&& Errors) : std::runtime_error(Errors.front()), m_Errors(std::move(Errors)) {} + + const std::vector<std::string> m_Errors; +}; + namespace zen { class ParallellWork @@ -95,13 +103,7 @@ public: } else if (m_Errors.size() > 1) { - ExtendableStringBuilder<128> SB; - SB.Append("Multiple errors:"); - for (const std::string& Error : m_Errors) - { - SB.Append(fmt::format("\n {}", Error)); - } - throw std::runtime_error(SB.ToString()); + throw ParallellWorkException(std::move(m_Errors)); } } Latch& PendingWork() { return m_PendingWork; } |