From c7c59cdc5a70bfd6e5f66f3b032ea3f8f6b4d12a Mon Sep 17 00:00:00 2001 From: Dan Engelbrecht Date: Mon, 20 Apr 2026 07:27:35 +0200 Subject: 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. --- src/zen/cmds/exec_cmd.cpp | 45 ++++++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 21 deletions(-) (limited to 'src/zen/cmds/exec_cmd.cpp') 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 #include -#include "../progressbar.h" +#include "consoleprogress.h" #include #include @@ -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 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 ProgressOwner(CreateConsoleProgress(m_Config.ProgressMode)); + std::unique_ptr 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 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{ -- cgit v1.2.3