diff options
author | Paul Cristian Sarbu <paul.cristian.sarbu@huawei.com> | 2024-03-07 15:44:28 +0100 |
---|---|---|
committer | Paul Cristian Sarbu <paul.cristian.sarbu@huawei.com> | 2024-03-11 15:59:05 +0100 |
commit | 5f6ff55e97104e46c1b5c2c94b39ea0fca35ca7c (patch) | |
tree | 9a8a70d311f2c55c20f426258455f9fb3037328a /src/buildtool/build_engine/target_map/export.cpp | |
parent | b885deebf9fc02b9f1e849d91de93fadcfb71a73 (diff) | |
download | justbuild-5f6ff55e97104e46c1b5c2c94b39ea0fca35ca7c.tar.gz |
just: Replace singletons for progress tracking and statistics...
...with regular instances that have controlled life-times.
This avoids race conditions in tracking and reporting the results
of analysis and build, as the serve endpoint can orchestrate
multiple builds at the same time asynchronously. As a bonus
side-effect this also ensures the correctness of the progress
reporting per orchestrated build.
Diffstat (limited to 'src/buildtool/build_engine/target_map/export.cpp')
-rw-r--r-- | src/buildtool/build_engine/target_map/export.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/buildtool/build_engine/target_map/export.cpp b/src/buildtool/build_engine/target_map/export.cpp index c9aed0e3..29085716 100644 --- a/src/buildtool/build_engine/target_map/export.cpp +++ b/src/buildtool/build_engine/target_map/export.cpp @@ -98,6 +98,7 @@ void ExportRule( const BuildMaps::Target::ConfiguredTarget& key, const gsl::not_null<RepositoryConfig*>& repo_config, const ActiveTargetCache& target_cache, + const gsl::not_null<Statistics*>& stats, const BuildMaps::Target::TargetMap::SubCallerPtr& subcaller, const BuildMaps::Target::TargetMap::SetterPtr& setter, const BuildMaps::Target::TargetMap::LoggerPtr& logger, @@ -134,7 +135,7 @@ void ExportRule( #endif // BOOTSTRAP_BUILD_TOOL if (not target_cache_value) { - Statistics::Instance().IncrementExportsUncachedCounter(); + stats->IncrementExportsUncachedCounter(); Logger::Log(LogLevel::Performance, "Export target {} registered for caching: {}", key.target.ToString(), @@ -176,7 +177,7 @@ void ExportRule( info.ToString()); (*setter)(std::move(analysis_result)); - Statistics::Instance().IncrementExportsCachedCounter(); + stats->IncrementExportsCachedCounter(); return; } (*logger)(fmt::format("Reading target entry for key {} failed", @@ -185,7 +186,7 @@ void ExportRule( } } else { - Statistics::Instance().IncrementExportsNotEligibleCounter(); + stats->IncrementExportsNotEligibleCounter(); Logger::Log(LogLevel::Performance, "Export target {} is not eligible for target caching", key.target.ToString()); |