diff options
-rw-r--r-- | src/buildtool/build_engine/target_map/TARGETS | 2 | ||||
-rw-r--r-- | src/buildtool/build_engine/target_map/absent_target_map.cpp | 11 | ||||
-rw-r--r-- | src/buildtool/main/TARGETS | 1 | ||||
-rw-r--r-- | src/buildtool/main/analyse.cpp | 24 |
4 files changed, 38 insertions, 0 deletions
diff --git a/src/buildtool/build_engine/target_map/TARGETS b/src/buildtool/build_engine/target_map/TARGETS index d5af4dfe..6878ab41 100644 --- a/src/buildtool/build_engine/target_map/TARGETS +++ b/src/buildtool/build_engine/target_map/TARGETS @@ -105,6 +105,8 @@ [ ["src/buildtool/common", "common"] , ["src/buildtool/storage", "storage"] , ["src/buildtool/logging", "logging"] + , ["src/buildtool/serve_api/progress_reporting", "progress"] + , ["src/buildtool/serve_api/progress_reporting", "statistics"] , ["src/buildtool/serve_api/remote", "serve_api"] ] } diff --git a/src/buildtool/build_engine/target_map/absent_target_map.cpp b/src/buildtool/build_engine/target_map/absent_target_map.cpp index 7eed2c84..6ccf1672 100644 --- a/src/buildtool/build_engine/target_map/absent_target_map.cpp +++ b/src/buildtool/build_engine/target_map/absent_target_map.cpp @@ -14,6 +14,8 @@ #include "src/buildtool/build_engine/target_map/absent_target_map.hpp" #ifndef BOOTSTRAP_BUILD_TOOL +#include "src/buildtool/serve_api/progress_reporting/progress.hpp" +#include "src/buildtool/serve_api/progress_reporting/statistics.hpp" #include "src/buildtool/serve_api/remote/serve_api.hpp" #include "src/buildtool/storage/target_cache_key.hpp" #endif @@ -80,10 +82,19 @@ auto BuildMaps::Target::CreateAbsentTargetMap( Logger::Log(LogLevel::Debug, "Querying just serve for export target {}", key.target.ToString()); + ServeServiceProgress::Instance().TaskTracker().Start( + target_cache_key->Id().ToString()); + ServeServiceStatistics::Instance().IncrementDispatchedCounter(); target_cache_value = ServeApi::ServeTarget(*target_cache_key, *repo_key); + ServeServiceStatistics::Instance().IncrementServedCounter(); + ServeServiceProgress::Instance().TaskTracker().Stop( + target_cache_key->Id().ToString()); from_just_serve = true; } + else { + ServeServiceStatistics::Instance().IncrementCacheHitsCounter(); + } if (!target_cache_value) { (*logger)(fmt::format("Could not get target cache value for key {}", diff --git a/src/buildtool/main/TARGETS b/src/buildtool/main/TARGETS index a9ea78f4..7e9278fc 100644 --- a/src/buildtool/main/TARGETS +++ b/src/buildtool/main/TARGETS @@ -125,6 +125,7 @@ , ["src/buildtool/build_engine/base_maps", "source_map"] , ["src/buildtool/build_engine/base_maps", "targets_file_map"] , ["src/buildtool/build_engine/target_map", "target_map"] + , ["src/buildtool/serve_api/progress_reporting", "progress_reporter"] ] } , "diagnose": diff --git a/src/buildtool/main/analyse.cpp b/src/buildtool/main/analyse.cpp index f90ba3ac..8b69daeb 100644 --- a/src/buildtool/main/analyse.cpp +++ b/src/buildtool/main/analyse.cpp @@ -14,6 +14,12 @@ #include "src/buildtool/main/analyse.hpp" +#ifndef BOOTSTRAP_BUILD_TOOL +#include <atomic> +#include <condition_variable> +#include <thread> +#endif // BOOTSTRAP_BUILD_TOOL + #include "src/buildtool/build_engine/base_maps/directory_map.hpp" #include "src/buildtool/build_engine/base_maps/entity_name.hpp" #include "src/buildtool/build_engine/base_maps/expression_map.hpp" @@ -24,6 +30,9 @@ #include "src/buildtool/build_engine/target_map/target_map.hpp" #include "src/buildtool/multithreading/async_map_consumer.hpp" #include "src/buildtool/multithreading/task_system.hpp" +#ifndef BOOTSTRAP_BUILD_TOOL +#include "src/buildtool/serve_api/progress_reporting/progress_reporter.hpp" +#endif // BOOTSTRAP_BUILD_TOOL namespace { @@ -153,6 +162,14 @@ void DetectAndReportPending(std::string const& name, Logger::Log(LogLevel::Info, "Requested target is {}", id.ToString()); AnalysedTargetPtr target{}; +#ifndef BOOTSTRAP_BUILD_TOOL + std::atomic<bool> done{false}; + std::condition_variable cv{}; + auto reporter = ServeServiceProgressReporter::Reporter(); + auto observer = + std::thread([reporter, &done, &cv]() { reporter(&done, &cv); }); +#endif // BOOTSTRAP_BUILD_TOOL + bool failed{false}; { TaskSystem ts{jobs}; @@ -168,6 +185,13 @@ void DetectAndReportPending(std::string const& name, }); } +#ifndef BOOTSTRAP_BUILD_TOOL + // close progress observer + done = true; + cv.notify_all(); + observer.join(); +#endif // BOOTSTRAP_BUILD_TOOL + if (failed) { return std::nullopt; } |