diff options
Diffstat (limited to 'src/buildtool/execution_engine')
-rw-r--r-- | src/buildtool/execution_engine/dag/dag.cpp | 2 | ||||
-rw-r--r-- | src/buildtool/execution_engine/dag/dag.hpp | 35 | ||||
-rw-r--r-- | src/buildtool/execution_engine/executor/executor.hpp | 14 |
3 files changed, 30 insertions, 21 deletions
diff --git a/src/buildtool/execution_engine/dag/dag.cpp b/src/buildtool/execution_engine/dag/dag.cpp index 17f4b3af..cb82ec55 100644 --- a/src/buildtool/execution_engine/dag/dag.cpp +++ b/src/buildtool/execution_engine/dag/dag.cpp @@ -148,7 +148,7 @@ auto DependencyGraph::AddAction(ActionDescription const& description) -> bool { auto DependencyGraph::AddAction(Action const& a) noexcept -> DependencyGraph::ActionNodeIdentifier { - auto id = a.Id(); + auto const& id = a.Id(); auto const action_it = action_ids_.find(id); if (action_it != action_ids_.end()) { return action_it->second; diff --git a/src/buildtool/execution_engine/dag/dag.hpp b/src/buildtool/execution_engine/dag/dag.hpp index 99a35f4b..7e2194ff 100644 --- a/src/buildtool/execution_engine/dag/dag.hpp +++ b/src/buildtool/execution_engine/dag/dag.hpp @@ -314,57 +314,60 @@ class DependencyGraph : DirectedAcyclicGraph { return true; } - [[nodiscard]] auto OutputFiles() - const& -> std::vector<NamedOtherNodePtr> const& { + [[nodiscard]] auto OutputFiles() const& noexcept + -> std::vector<NamedOtherNodePtr> const& { return output_files_; } - [[nodiscard]] auto OutputDirs() - const& -> std::vector<NamedOtherNodePtr> const& { + [[nodiscard]] auto OutputDirs() const& noexcept + -> std::vector<NamedOtherNodePtr> const& { return output_dirs_; } - [[nodiscard]] auto Dependencies() - const& -> std::vector<NamedOtherNodePtr> const& { + [[nodiscard]] auto Dependencies() const& noexcept + -> std::vector<NamedOtherNodePtr> const& { return dependencies_; } - [[nodiscard]] auto Command() const -> std::vector<std::string> { + [[nodiscard]] auto Command() const noexcept + -> std::vector<std::string> const& { return Content().Command(); } - [[nodiscard]] auto Env() const -> std::map<std::string, std::string> { + [[nodiscard]] auto Env() const noexcept + -> std::map<std::string, std::string> const& { return Content().Env(); } - [[nodiscard]] auto MayFail() const -> std::optional<std::string> { + [[nodiscard]] auto MayFail() const noexcept + -> std::optional<std::string> const& { return Content().MayFail(); } - [[nodiscard]] auto TimeoutScale() const -> double { + [[nodiscard]] auto TimeoutScale() const noexcept -> double { return Content().TimeoutScale(); } - [[nodiscard]] auto ExecutionProperties() const - -> std::map<std::string, std::string> { + [[nodiscard]] auto ExecutionProperties() const noexcept + -> std::map<std::string, std::string> const& { return Content().ExecutionProperties(); } - [[nodiscard]] auto NoCache() const -> bool { + [[nodiscard]] auto NoCache() const noexcept -> bool { return Content().NoCache(); } - [[nodiscard]] auto OutputFilePaths() const + [[nodiscard]] auto OutputFilePaths() const noexcept -> std::vector<Action::LocalPath> { return NodePaths(output_files_); } - [[nodiscard]] auto OutputDirPaths() const + [[nodiscard]] auto OutputDirPaths() const noexcept -> std::vector<Action::LocalPath> { return NodePaths(output_dirs_); } - [[nodiscard]] auto DependencyPaths() const + [[nodiscard]] auto DependencyPaths() const noexcept -> std::vector<Action::LocalPath> { return NodePaths(dependencies_); } diff --git a/src/buildtool/execution_engine/executor/executor.hpp b/src/buildtool/execution_engine/executor/executor.hpp index d0bc7aee..097284e1 100644 --- a/src/buildtool/execution_engine/executor/executor.hpp +++ b/src/buildtool/execution_engine/executor/executor.hpp @@ -972,11 +972,17 @@ class Rebuilder { return artifacts_cached.error(); } std::ostringstream msg{}; - for (auto const& [path, info] : *artifacts.value()) { - auto const& info_cached = artifacts_cached.value()->at(path); - if (info != info_cached) { - RecordFlakyAction(&msg, action, path, info, info_cached); + try { + for (auto const& [path, info] : *artifacts.value()) { + auto const& info_cached = + artifacts_cached.value()->at(path); + if (info != info_cached) { + RecordFlakyAction( + &msg, action, path, info, info_cached); + } } + } catch (std::exception const& ex) { + return ex.what(); } if (msg.tellp() > 0) { stats.IncrementActionsFlakyCounter(); |