summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2023-12-06 15:14:19 +0100
committerPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2023-12-12 16:09:10 +0100
commitd240b3b2d53bb476e742959fa25c3d8806e3800f (patch)
tree06f3a2600e2206add8148366e5b9edaa126c927a
parentc960f942e102df26795226320e761a7f3d78b606 (diff)
downloadjustbuild-d240b3b2d53bb476e742959fa25c3d8806e3800f.tar.gz
just: Report progress of export targets served during analysis
-rw-r--r--src/buildtool/build_engine/target_map/TARGETS2
-rw-r--r--src/buildtool/build_engine/target_map/absent_target_map.cpp11
-rw-r--r--src/buildtool/main/TARGETS1
-rw-r--r--src/buildtool/main/analyse.cpp24
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;
}