aboutsummaryrefslogtreecommitdiff
path: root/src/zen/cmds/builds_cmd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/zen/cmds/builds_cmd.cpp')
-rw-r--r--src/zen/cmds/builds_cmd.cpp217
1 files changed, 122 insertions, 95 deletions
diff --git a/src/zen/cmds/builds_cmd.cpp b/src/zen/cmds/builds_cmd.cpp
index f4edb65ab..b4b4df7c9 100644
--- a/src/zen/cmds/builds_cmd.cpp
+++ b/src/zen/cmds/builds_cmd.cpp
@@ -67,13 +67,11 @@ ZEN_THIRD_PARTY_INCLUDES_END
static const bool DoExtraContentVerify = false;
-#define ZEN_CLOUD_STORAGE "Cloud Storage"
-
namespace zen {
using namespace std::literals;
-namespace {
+namespace builds_impl {
static std::atomic<bool> AbortFlag = false;
static std::atomic<bool> PauseFlag = false;
@@ -270,10 +268,11 @@ namespace {
static bool IsQuiet = false;
static ProgressBar::Mode ProgressMode = ProgressBar::Mode::Pretty;
-#define ZEN_CONSOLE_VERBOSE(fmtstr, ...) \
- if (IsVerbose) \
- { \
- ZEN_CONSOLE_LOG(zen::logging::level::Info, fmtstr, ##__VA_ARGS__); \
+#undef ZEN_CONSOLE_VERBOSE
+#define ZEN_CONSOLE_VERBOSE(fmtstr, ...) \
+ if (IsVerbose) \
+ { \
+ ZEN_CONSOLE_LOG(zen::logging::Info, fmtstr, ##__VA_ARGS__); \
}
const std::string DefaultAccessTokenEnvVariableName(
@@ -1467,9 +1466,16 @@ namespace {
ZEN_CONSOLE("Downloading build {}, parts:{} to '{}' ({})", BuildId, BuildPartString.ToView(), Path, NiceBytes(RawSize));
}
+ Stopwatch IndexTimer;
+
const ChunkedContentLookup LocalLookup = BuildChunkedContentLookup(LocalState.State.ChunkedContent);
const ChunkedContentLookup RemoteLookup = BuildChunkedContentLookup(RemoteContent);
+ if (!IsQuiet)
+ {
+ ZEN_OPERATION_LOG_INFO(Output, "Indexed local and remote content in {}", NiceTimeSpanMs(IndexTimer.GetElapsedTimeMs()));
+ }
+
ProgressBar::SetLogOperationProgress(ProgressMode, TaskSteps::Download, TaskSteps::StepCount);
BuildsOperationUpdateFolder Updater(
@@ -1588,7 +1594,7 @@ namespace {
}
}
}
- if (Storage.BuildCacheStorage)
+ if (Storage.CacheStorage)
{
if (SB.Size() > 0)
{
@@ -1643,9 +1649,9 @@ namespace {
}
if (Options.PrimeCacheOnly)
{
- if (Storage.BuildCacheStorage)
+ if (Storage.CacheStorage)
{
- Storage.BuildCacheStorage->Flush(5000, [](intptr_t Remaining) {
+ Storage.CacheStorage->Flush(5000, [](intptr_t Remaining) {
if (!IsQuiet)
{
if (Remaining == 0)
@@ -2002,12 +2008,13 @@ namespace {
ProgressBar::SetLogOperationProgress(ProgressMode, TaskSteps::Cleanup, TaskSteps::StepCount);
}
-} // namespace
+} // namespace builds_impl
//////////////////////////////////////////////////////////////////////////////////////////////////////
BuildsCommand::BuildsCommand()
{
+ using namespace builds_impl;
m_Options.add_options()("h,help", "Print help");
auto AddSystemOptions = [this](cxxopts::Options& Ops) {
@@ -2648,6 +2655,7 @@ BuildsCommand::~BuildsCommand() = default;
void
BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
{
+ using namespace builds_impl;
ZEN_UNUSED(GlobalOptions);
signal(SIGINT, SignalCallbackHandler);
@@ -2680,7 +2688,7 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
{
m_SystemRootDir = PickDefaultSystemRootDirectory();
}
- MakeSafeAbsolutePathÍnPlace(m_SystemRootDir);
+ MakeSafeAbsolutePathInPlace(m_SystemRootDir);
};
ParseSystemOptions();
@@ -2729,7 +2737,7 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
{
throw OptionParseException("'--host', '--url', '--override-host' or '--storage-path' is required", SubOption->help());
}
- MakeSafeAbsolutePathÍnPlace(m_StoragePath);
+ MakeSafeAbsolutePathInPlace(m_StoragePath);
};
auto ParseOutputOptions = [&]() {
@@ -2800,8 +2808,6 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
.Verbose = m_VerboseHttp,
.MaximumInMemoryDownloadSize = GetMaxMemoryBufferSize(DefaultMaxChunkBlockSize, m_BoostWorkerMemory)};
- std::unique_ptr<AuthMgr> Auth;
-
std::string StorageDescription;
std::string CacheDescription;
@@ -2820,44 +2826,47 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
BuildStorageResolveResult ResolveRes =
ResolveBuildStorage(*Output, ClientSettings, m_Host, m_OverrideHost, m_ZenCacheHost, ZenCacheResolveMode::All, m_Verbose);
- if (!ResolveRes.HostUrl.empty())
+ if (!ResolveRes.Cloud.Address.empty())
{
- ClientSettings.AssumeHttp2 = ResolveRes.HostAssumeHttp2;
+ ClientSettings.AssumeHttp2 = ResolveRes.Cloud.AssumeHttp2;
Result.BuildStorageHttp =
- std::make_unique<HttpClient>(ResolveRes.HostUrl, ClientSettings, []() { return AbortFlag.load(); });
+ std::make_unique<HttpClient>(ResolveRes.Cloud.Address, ClientSettings, []() { return AbortFlag.load(); });
- Result.BuildStorage = CreateJupiterBuildStorage(Log(),
+ Result.BuildStorage = CreateJupiterBuildStorage(Log(),
*Result.BuildStorageHttp,
StorageStats,
m_Namespace,
m_Bucket,
m_AllowRedirect,
TempPath / "storage");
- Result.StorageName = ResolveRes.HostName;
+ Result.BuildStorageHost = ResolveRes.Cloud;
+
+ uint64_t HostLatencyNs = ResolveRes.Cloud.LatencySec >= 0 ? uint64_t(ResolveRes.Cloud.LatencySec * 1000000000.0) : 0;
- StorageDescription = fmt::format("Cloud {}{}. SessionId: '{}'. Namespace '{}', Bucket '{}'",
- ResolveRes.HostName,
- (ResolveRes.HostUrl == ResolveRes.HostName) ? "" : fmt::format(" {}", ResolveRes.HostUrl),
- Result.BuildStorageHttp->GetSessionId(),
- m_Namespace,
- m_Bucket);
- ;
+ StorageDescription =
+ fmt::format("Cloud {}{}. SessionId: '{}'. Namespace '{}', Bucket '{}'. Latency: {}",
+ ResolveRes.Cloud.Name,
+ (ResolveRes.Cloud.Address == ResolveRes.Cloud.Name) ? "" : fmt::format(" {}", ResolveRes.Cloud.Address),
+ Result.BuildStorageHttp->GetSessionId(),
+ m_Namespace,
+ m_Bucket,
+ NiceLatencyNs(HostLatencyNs));
- if (!ResolveRes.CacheUrl.empty())
+ if (!ResolveRes.Cache.Address.empty())
{
Result.CacheHttp = std::make_unique<HttpClient>(
- ResolveRes.CacheUrl,
+ ResolveRes.Cache.Address,
HttpClientSettings{
.LogCategory = "httpcacheclient",
.ConnectTimeout = std::chrono::milliseconds{3000},
.Timeout = std::chrono::milliseconds{30000},
- .AssumeHttp2 = ResolveRes.CacheAssumeHttp2,
+ .AssumeHttp2 = ResolveRes.Cache.AssumeHttp2,
.AllowResume = true,
.RetryCount = 0,
.Verbose = m_VerboseHttp,
.MaximumInMemoryDownloadSize = GetMaxMemoryBufferSize(DefaultMaxChunkBlockSize, m_BoostWorkerMemory)},
[]() { return AbortFlag.load(); });
- Result.BuildCacheStorage =
+ Result.CacheStorage =
CreateZenBuildStorageCache(*Result.CacheHttp,
StorageCacheStats,
m_Namespace,
@@ -2865,14 +2874,17 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
TempPath / "zencache",
BoostCacheBackgroundWorkerPool ? GetSmallWorkerPool(EWorkloadType::Background)
: GetTinyWorkerPool(EWorkloadType::Background));
- Result.CacheName = ResolveRes.CacheName;
+ Result.CacheHost = ResolveRes.Cache;
+
+ uint64_t CacheLatencyNs = ResolveRes.Cache.LatencySec >= 0 ? uint64_t(ResolveRes.Cache.LatencySec * 1000000000.0) : 0;
CacheDescription =
- fmt::format("Zen {}{}. SessionId: '{}'",
- ResolveRes.CacheName,
- (ResolveRes.CacheUrl == ResolveRes.CacheName) ? "" : fmt::format(" {}", ResolveRes.CacheUrl),
- Result.CacheHttp->GetSessionId());
- ;
+ fmt::format("Zen {}{}. SessionId: '{}'. Latency: {}",
+ ResolveRes.Cache.Name,
+ (ResolveRes.Cache.Address == ResolveRes.Cache.Name) ? "" : fmt::format(" {}", ResolveRes.Cache.Address),
+ Result.CacheHttp->GetSessionId(),
+ NiceLatencyNs(CacheLatencyNs));
+
if (!m_Namespace.empty())
{
CacheDescription += fmt::format(". Namespace '{}'", m_Namespace);
@@ -2888,41 +2900,56 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
{
StorageDescription = fmt::format("folder {}", m_StoragePath);
Result.BuildStorage = CreateFileBuildStorage(m_StoragePath, StorageStats, false, DefaultLatency, DefaultDelayPerKBSec);
- Result.StorageName = fmt::format("Disk {}", m_StoragePath.stem());
+
+ Result.BuildStorageHost = BuildStorageResolveResult::Host{.Address = m_StoragePath.generic_string(),
+ .Name = "Disk",
+ .LatencySec = 1.0 / 100000, // 1 us
+ .Caps = {.MaxRangeCountPerRequest = 2048u}};
if (!m_ZenCacheHost.empty())
{
- Result.CacheHttp = std::make_unique<HttpClient>(
- m_ZenCacheHost,
- HttpClientSettings{
- .LogCategory = "httpcacheclient",
- .ConnectTimeout = std::chrono::milliseconds{3000},
- .Timeout = std::chrono::milliseconds{30000},
- .AssumeHttp2 = m_AssumeHttp2,
- .AllowResume = true,
- .RetryCount = 0,
- .Verbose = m_VerboseHttp,
- .MaximumInMemoryDownloadSize = GetMaxMemoryBufferSize(DefaultMaxChunkBlockSize, m_BoostWorkerMemory)},
- []() { return AbortFlag.load(); });
- Result.BuildCacheStorage =
- CreateZenBuildStorageCache(*Result.CacheHttp,
- StorageCacheStats,
- m_Namespace,
- m_Bucket,
- TempPath / "zencache",
- BoostCacheBackgroundWorkerPool ? GetSmallWorkerPool(EWorkloadType::Background)
- : GetTinyWorkerPool(EWorkloadType::Background));
- Result.CacheName = m_ZenCacheHost;
-
- CacheDescription = fmt::format("Zen {}{}. SessionId: '{}'", Result.CacheName, "", Result.CacheHttp->GetSessionId());
- ;
- if (!m_Namespace.empty())
- {
- CacheDescription += fmt::format(". Namespace '{}'", m_Namespace);
- }
- if (!m_Bucket.empty())
+ ZenCacheEndpointTestResult TestResult = TestZenCacheEndpoint(m_ZenCacheHost, m_AssumeHttp2, m_VerboseHttp);
+
+ if (TestResult.Success)
{
- CacheDescription += fmt::format(" Bucket '{}'", m_Bucket);
+ Result.CacheHttp = std::make_unique<HttpClient>(
+ m_ZenCacheHost,
+ HttpClientSettings{
+ .LogCategory = "httpcacheclient",
+ .ConnectTimeout = std::chrono::milliseconds{3000},
+ .Timeout = std::chrono::milliseconds{30000},
+ .AssumeHttp2 = m_AssumeHttp2,
+ .AllowResume = true,
+ .RetryCount = 0,
+ .Verbose = m_VerboseHttp,
+ .MaximumInMemoryDownloadSize = GetMaxMemoryBufferSize(DefaultMaxChunkBlockSize, m_BoostWorkerMemory)},
+ []() { return AbortFlag.load(); });
+
+ Result.CacheStorage =
+ CreateZenBuildStorageCache(*Result.CacheHttp,
+ StorageCacheStats,
+ m_Namespace,
+ m_Bucket,
+ TempPath / "zencache",
+ BoostCacheBackgroundWorkerPool ? GetSmallWorkerPool(EWorkloadType::Background)
+ : GetTinyWorkerPool(EWorkloadType::Background));
+ Result.CacheHost =
+ BuildStorageResolveResult::Host{.Address = m_ZenCacheHost,
+ .Name = m_ZenCacheHost,
+ .AssumeHttp2 = m_AssumeHttp2,
+ .LatencySec = TestResult.LatencySeconds,
+ .Caps = {.MaxRangeCountPerRequest = TestResult.MaxRangeCountPerRequest}};
+
+ CacheDescription = fmt::format("Zen {}. SessionId: '{}'", Result.CacheHost.Name, Result.CacheHttp->GetSessionId());
+
+ if (!m_Namespace.empty())
+ {
+ CacheDescription += fmt::format(". Namespace '{}'", m_Namespace);
+ }
+ if (!m_Bucket.empty())
+ {
+ CacheDescription += fmt::format(" Bucket '{}'", m_Bucket);
+ }
}
}
}
@@ -2934,7 +2961,7 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
if (!IsQuiet)
{
ZEN_CONSOLE("Remote: {}", StorageDescription);
- if (!Result.CacheName.empty())
+ if (!Result.CacheHost.Name.empty())
{
ZEN_CONSOLE("Cache : {}", CacheDescription);
}
@@ -2947,7 +2974,7 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
{
throw OptionParseException("'--local-path' is required", SubOption->help());
}
- MakeSafeAbsolutePathÍnPlace(m_Path);
+ MakeSafeAbsolutePathInPlace(m_Path);
};
auto ParseFileFilters = [&](std::vector<std::string>& OutIncludeWildcards, std::vector<std::string>& OutExcludeWildcards) {
@@ -3004,7 +3031,7 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
{
throw OptionParseException("'--compare-path' is required", SubOption->help());
}
- MakeSafeAbsolutePathÍnPlace(m_DiffPath);
+ MakeSafeAbsolutePathInPlace(m_DiffPath);
};
auto ParseBlobHash = [&]() -> IoHash {
@@ -3016,7 +3043,7 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
if (m_BlobHash.length() != IoHash::StringLength)
{
throw OptionParseException(
- fmt::format("'--blob-hash' ('{}') is malfomed, it must be {} characters long", m_BlobHash, IoHash::StringLength),
+ fmt::format("'--blob-hash' ('{}') is malformed, it must be {} characters long", m_BlobHash, IoHash::StringLength),
SubOption->help());
}
@@ -3033,7 +3060,7 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
if (m_BuildId.length() != Oid::StringLength)
{
throw OptionParseException(
- fmt::format("'--build-id' ('{}') is malfomed, it must be {} characters long", m_BuildId, Oid::StringLength),
+ fmt::format("'--build-id' ('{}') is malformed, it must be {} characters long", m_BuildId, Oid::StringLength),
SubOption->help());
}
else if (Oid BuildId = Oid::FromHexString(m_BuildId); BuildId == Oid::Zero)
@@ -3105,7 +3132,7 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
if (!m_BuildMetadataPath.empty())
{
- MakeSafeAbsolutePathÍnPlace(m_BuildMetadataPath);
+ MakeSafeAbsolutePathInPlace(m_BuildMetadataPath);
IoBuffer MetaDataJson = ReadFile(m_BuildMetadataPath).Flatten();
std::string_view Json(reinterpret_cast<const char*>(MetaDataJson.GetData()), MetaDataJson.GetSize());
std::string JsonError;
@@ -3202,8 +3229,8 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
if (SubOption == &m_ListOptions)
{
- MakeSafeAbsolutePathÍnPlace(m_ListQueryPath);
- MakeSafeAbsolutePathÍnPlace(m_ListResultPath);
+ MakeSafeAbsolutePathInPlace(m_ListQueryPath);
+ MakeSafeAbsolutePathInPlace(m_ListResultPath);
if (!m_ListResultPath.empty())
{
@@ -3255,7 +3282,7 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
{
m_ZenFolderPath = std::filesystem::current_path() / ZenFolderName;
}
- MakeSafeAbsolutePathÍnPlace(m_ZenFolderPath);
+ MakeSafeAbsolutePathInPlace(m_ZenFolderPath);
CreateDirectories(m_ZenFolderPath);
auto _ = MakeGuard([this]() { CleanAndRemoveDirectory(GetSmallWorkerPool(EWorkloadType::Burst), m_ZenFolderPath); });
@@ -3294,7 +3321,7 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
if (SubOption == &m_ListBlocksOptions)
{
- MakeSafeAbsolutePathÍnPlace(m_ListResultPath);
+ MakeSafeAbsolutePathInPlace(m_ListResultPath);
if (!m_ListResultPath.empty())
{
@@ -3316,7 +3343,7 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
{
m_ZenFolderPath = std::filesystem::current_path() / ZenFolderName;
}
- MakeSafeAbsolutePathÍnPlace(m_ZenFolderPath);
+ MakeSafeAbsolutePathInPlace(m_ZenFolderPath);
CreateDirectories(m_ZenFolderPath);
auto _ = MakeGuard([this]() { CleanAndRemoveDirectory(GetSmallWorkerPool(EWorkloadType::Burst), m_ZenFolderPath); });
@@ -3387,8 +3414,8 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
{
m_ZenFolderPath = std::filesystem::current_path() / ZenFolderName;
}
- MakeSafeAbsolutePathÍnPlace(m_ZenFolderPath);
- MakeSafeAbsolutePathÍnPlace(m_ChunkingCachePath);
+ MakeSafeAbsolutePathInPlace(m_ZenFolderPath);
+ MakeSafeAbsolutePathInPlace(m_ChunkingCachePath);
CreateDirectories(m_ZenFolderPath);
auto _ = MakeGuard([this, &Workers]() { CleanAndRemoveDirectory(Workers.GetIOWorkerPool(), m_ZenFolderPath); });
@@ -3475,7 +3502,7 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
"Requests: {}\n"
"Avg Request Time: {}\n"
"Avg I/O Time: {}",
- Storage.StorageName,
+ Storage.BuildStorageHost.Name,
NiceBytes(StorageStats.TotalBytesRead.load()),
NiceBytes(StorageStats.TotalBytesWritten.load()),
StorageStats.TotalRequestCount.load(),
@@ -3532,7 +3559,7 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
{
m_ZenFolderPath = m_Path / ZenFolderName;
}
- MakeSafeAbsolutePathÍnPlace(m_ZenFolderPath);
+ MakeSafeAbsolutePathInPlace(m_ZenFolderPath);
BuildStorageBase::Statistics StorageStats;
BuildStorageCache::Statistics StorageCacheStats;
@@ -3632,7 +3659,7 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
{
m_ZenFolderPath = m_Path / ZenFolderName;
}
- MakeSafeAbsolutePathÍnPlace(m_ZenFolderPath);
+ MakeSafeAbsolutePathInPlace(m_ZenFolderPath);
BuildStorageBase::Statistics StorageStats;
BuildStorageCache::Statistics StorageCacheStats;
@@ -3652,7 +3679,7 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
std::unique_ptr<CbObjectWriter> StructuredOutput;
if (!m_LsResultPath.empty())
{
- MakeSafeAbsolutePathÍnPlace(m_LsResultPath);
+ MakeSafeAbsolutePathInPlace(m_LsResultPath);
StructuredOutput = std::make_unique<CbObjectWriter>();
}
@@ -3696,7 +3723,7 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
ParsePath();
ParseDiffPath();
- MakeSafeAbsolutePathÍnPlace(m_ChunkingCachePath);
+ MakeSafeAbsolutePathInPlace(m_ChunkingCachePath);
std::vector<std::string> ExcludeFolders = DefaultExcludeFolders;
std::vector<std::string> ExcludeExtensions = DefaultExcludeExtensions;
@@ -3745,7 +3772,7 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
{
m_ZenFolderPath = std::filesystem::current_path() / ZenFolderName;
}
- MakeSafeAbsolutePathÍnPlace(m_ZenFolderPath);
+ MakeSafeAbsolutePathInPlace(m_ZenFolderPath);
CreateDirectories(m_ZenFolderPath);
auto _ = MakeGuard([this, &Workers]() { CleanAndRemoveDirectory(Workers.GetIOWorkerPool(), m_ZenFolderPath); });
@@ -3796,12 +3823,12 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
if (!IsQuiet)
{
- if (Storage.BuildCacheStorage)
+ if (Storage.CacheStorage)
{
- ZEN_CONSOLE("Uploaded {} ({}) blobs",
+ ZEN_CONSOLE("Uploaded {} ({}) blobs to {}",
StorageCacheStats.PutBlobCount.load(),
NiceBytes(StorageCacheStats.PutBlobByteCount),
- Storage.CacheName);
+ Storage.CacheHost.Name);
}
}
@@ -3828,7 +3855,7 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
{
m_ZenFolderPath = std::filesystem::current_path() / ZenFolderName;
}
- MakeSafeAbsolutePathÍnPlace(m_ZenFolderPath);
+ MakeSafeAbsolutePathInPlace(m_ZenFolderPath);
CreateDirectories(m_ZenFolderPath);
auto _ = MakeGuard([this, &Workers]() { CleanAndRemoveDirectory(Workers.GetIOWorkerPool(), m_ZenFolderPath); });
@@ -3883,7 +3910,7 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
{
m_ZenFolderPath = std::filesystem::current_path() / ZenFolderName;
}
- MakeSafeAbsolutePathÍnPlace(m_ZenFolderPath);
+ MakeSafeAbsolutePathInPlace(m_ZenFolderPath);
CreateDirectories(m_ZenFolderPath);
auto _ = MakeGuard([this, &Workers]() { CleanAndRemoveDirectory(Workers.GetIOWorkerPool(), m_ZenFolderPath); });
@@ -3933,7 +3960,7 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
{
m_ZenFolderPath = m_Path / ZenFolderName;
}
- MakeSafeAbsolutePathÍnPlace(m_ZenFolderPath);
+ MakeSafeAbsolutePathInPlace(m_ZenFolderPath);
EPartialBlockRequestMode PartialBlockRequestMode = ParseAllowPartialBlockRequests();
@@ -4083,8 +4110,8 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
{
m_ZenFolderPath = m_Path / ZenFolderName;
}
- MakeSafeAbsolutePathÍnPlace(m_ZenFolderPath);
- MakeSafeAbsolutePathÍnPlace(m_ChunkingCachePath);
+ MakeSafeAbsolutePathInPlace(m_ZenFolderPath);
+ MakeSafeAbsolutePathInPlace(m_ChunkingCachePath);
StorageInstance Storage = CreateBuildStorage(StorageStats,
StorageCacheStats,