aboutsummaryrefslogtreecommitdiff
path: root/src/zen/cmds/exec_cmd.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2026-04-20 07:27:35 +0200
committerGitHub Enterprise <[email protected]>2026-04-20 07:27:35 +0200
commitc7c59cdc5a70bfd6e5f66f3b032ea3f8f6b4d12a (patch)
tree8ce2472f9fbdd29a899be25adc864baf98ff8184 /src/zen/cmds/exec_cmd.cpp
parentMerge pull request #976 from ue-foundation/zs/config-build-storage (diff)
downloadarchived-zen-c7c59cdc5a70bfd6e5f66f3b032ea3f8f6b4d12a.tar.xz
archived-zen-c7c59cdc5a70bfd6e5f66f3b032ea3f8f6b4d12a.zip
builds cmd refactor (#975)
- Bugfix: `builds download` partial-block fetch decisions now account for build storage host latency - Bugfix: Transfer rate displays in `builds` commands now smooth correctly - Split `buildstorageoperations.cpp` (8.5k lines) into per-operation TUs: buildinspect, buildprimecache, buildstorageresolve, buildupdatefolder, builduploadfolder, buildvalidatebuildpart; stats moved to buildstoragestats.h. - FilteredRate extracted to zenutil. - BuildsCommand shared state consolidated into a BuildsConfiguration struct; subcommands inherit from BuildsSubCmdBase holding a `const BuildsConfiguration&` instead of a `BuildsCommand&`. - `ProgressBar` renamed to `ConsoleProgressBar`; mode enum (`ConsoleProgressMode`) lifted to namespace scope; `PushLogOperation`/`PopLogOperation`/`ForceLinebreak` promoted to virtuals on `ProgressBase`. - Free-function wrappers (`UploadFolder`, `DownloadFolder`, `ValidateBuildPart`) added around the existing operation classes so callers stop reimplementing setup + stats logging.
Diffstat (limited to 'src/zen/cmds/exec_cmd.cpp')
-rw-r--r--src/zen/cmds/exec_cmd.cpp45
1 files changed, 24 insertions, 21 deletions
diff --git a/src/zen/cmds/exec_cmd.cpp b/src/zen/cmds/exec_cmd.cpp
index dab53f13c..6cebfa430 100644
--- a/src/zen/cmds/exec_cmd.cpp
+++ b/src/zen/cmds/exec_cmd.cpp
@@ -23,7 +23,7 @@
#include <zenhttp/httpclient.h>
#include <zenhttp/packageformat.h>
-#include "../progressbar.h"
+#include "consoleprogress.h"
#include <EASTL/hash_map.h>
#include <EASTL/hash_set.h>
@@ -133,7 +133,7 @@ struct ExecSessionConfig
bool Quiet = false;
bool DumpActions = false;
bool Binary = false;
- ProgressBar::Mode ProgressMode = ProgressBar::Mode::Pretty;
+ ConsoleProgressMode ProgressMode = ConsoleProgressMode::Pretty;
};
//////////////////////////////////////////////////////////////////////////
@@ -903,9 +903,11 @@ ExecSessionRunner::Run()
std::atomic<int> SubmittedWorkItems{0};
size_t TotalWorkItems = RemainingWorkItems.load();
- ProgressBar SubmitProgress(m_Config.ProgressMode, "Submit");
- SubmitProgress.UpdateState({.Task = "Submitting work items", .TotalCount = TotalWorkItems, .RemainingCount = RemainingWorkItems.load()},
- false);
+ std::unique_ptr<ProgressBase> ProgressOwner(CreateConsoleProgress(m_Config.ProgressMode));
+ std::unique_ptr<ProgressBase::ProgressBar> SubmitProgress = ProgressOwner->CreateProgressBar("Submit");
+ SubmitProgress->UpdateState(
+ {.Task = "Submitting work items", .TotalCount = TotalWorkItems, .RemainingCount = RemainingWorkItems.load()},
+ false);
int OffsetCounter = m_Config.Offset;
int StrideCounter = m_Config.Stride;
@@ -1012,11 +1014,11 @@ ExecSessionRunner::Run()
size_t Remaining = --RemainingWorkItems;
int Submitted = ++SubmittedWorkItems;
- SubmitProgress.UpdateState({.Task = "Submitting work items",
- .Details = fmt::format("#{} LSN {}", Submitted, LsnField),
- .TotalCount = TotalWorkItems,
- .RemainingCount = Remaining},
- false);
+ SubmitProgress->UpdateState({.Task = "Submitting work items",
+ .Details = fmt::format("#{} LSN {}", Submitted, LsnField),
+ .TotalCount = TotalWorkItems,
+ .RemainingCount = Remaining},
+ false);
if (!m_Config.OutputPath.empty())
{
@@ -1056,30 +1058,31 @@ ExecSessionRunner::Run()
},
TargetParallelism);
- SubmitProgress.Finish();
+ SubmitProgress->Finish();
// Wait until all pending work is complete
size_t TotalPendingJobs = m_PendingJobs.GetSize();
- ProgressBar CompletionProgress(m_Config.ProgressMode, "Execute");
+ std::unique_ptr<ProgressBase::ProgressBar> CompletionProgress = ProgressOwner->CreateProgressBar("Execute");
while (!m_PendingJobs.IsEmpty())
{
size_t PendingCount = m_PendingJobs.GetSize();
- CompletionProgress.UpdateState({.Task = "Executing work items",
- .Details = fmt::format("{} completed, {} remaining", TotalPendingJobs - PendingCount, PendingCount),
- .TotalCount = TotalPendingJobs,
- .RemainingCount = PendingCount},
- false);
+ CompletionProgress->UpdateState(
+ {.Task = "Executing work items",
+ .Details = fmt::format("{} completed, {} remaining", TotalPendingJobs - PendingCount, PendingCount),
+ .TotalCount = TotalPendingJobs,
+ .RemainingCount = PendingCount},
+ false);
- zen::Sleep(GetUpdateDelayMS(m_Config.ProgressMode));
+ zen::Sleep(ProgressOwner->GetProgressUpdateDelayMS());
DrainCompletedJobs();
SendOrchestratorHeartbeat();
}
- CompletionProgress.Finish();
+ CompletionProgress->Finish();
// Write summary files
@@ -1438,10 +1441,10 @@ ExecCommand::OnParentOptionsParsed(const ZenCliOptions& GlobalOptions)
int
ExecCommand::RunSession(zen::compute::ComputeServiceSession& ComputeSession, std::string_view OrchestratorUrl)
{
- ProgressBar::Mode ProgressMode = ProgressBar::Mode::Pretty;
+ ConsoleProgressMode ProgressMode = ConsoleProgressMode::Pretty;
if (m_QuietLogging)
{
- ProgressMode = ProgressBar::Mode::Quiet;
+ ProgressMode = ConsoleProgressMode::Quiet;
}
ExecSessionConfig Config{