aboutsummaryrefslogtreecommitdiff
path: root/zenserver/upstream/upstreamapply.cpp
diff options
context:
space:
mode:
authorJoe Kirchoff <[email protected]>2021-11-15 09:48:04 -0800
committerJoe Kirchoff <[email protected]>2021-11-15 09:48:04 -0800
commitd1b8635b9b50f7b55b4caea193edaa29b6da0544 (patch)
tree6ab1c74c6c6848b32a6408407a6c0eea9da25326 /zenserver/upstream/upstreamapply.cpp
parentHandle 'partial on error' cache policy. (diff)
downloadzen-d1b8635b9b50f7b55b4caea193edaa29b6da0544.tar.xz
zen-d1b8635b9b50f7b55b4caea193edaa29b6da0544.zip
Horde Apply: Pass through
Currently only Windows is supported Add some additional error messaging on failure
Diffstat (limited to 'zenserver/upstream/upstreamapply.cpp')
-rw-r--r--zenserver/upstream/upstreamapply.cpp45
1 files changed, 43 insertions, 2 deletions
diff --git a/zenserver/upstream/upstreamapply.cpp b/zenserver/upstream/upstreamapply.cpp
index 3f1b0d8f9..a9b0e7fd0 100644
--- a/zenserver/upstream/upstreamapply.cpp
+++ b/zenserver/upstream/upstreamapply.cpp
@@ -279,6 +279,28 @@ namespace detail {
Exception = 6,
};
+ std::string_view ComputeTaskOutcomeToString(const ComputeTaskOutcome Outcome)
+ {
+ switch (Outcome)
+ {
+ case ComputeTaskOutcome::Success:
+ return "Success"sv;
+ case ComputeTaskOutcome::Failed:
+ return "Failed"sv;
+ case ComputeTaskOutcome::Cancelled:
+ return "Cancelled"sv;
+ case ComputeTaskOutcome::NoResult:
+ return "NoResult"sv;
+ case ComputeTaskOutcome::Exipred:
+ return "Exipred"sv;
+ case ComputeTaskOutcome::BlobNotFound:
+ return "BlobNotFound"sv;
+ case ComputeTaskOutcome::Exception:
+ return "Exception"sv;
+ };
+ return "Unknown"sv;
+ }
+
virtual GetUpstreamApplyUpdatesResult GetUpdates() override
{
int64_t Bytes{};
@@ -410,8 +432,15 @@ namespace detail {
if (Outcome != ComputeTaskOutcome::Success)
{
+ using namespace fmt::literals;
const std::string_view Detail = TaskStatus["d"sv].AsString();
- return {.Error{.ErrorCode = -1, .Reason = std::string(Detail)}};
+ if (!Detail.empty())
+ {
+ return {.Error{.ErrorCode = -1,
+ .Reason = "Task {}: {}"_format(ComputeTaskOutcomeToString(Outcome), std::string(Detail))}};
+ }
+ return {
+ .Error{.ErrorCode = -1, .Reason = "Task {}"_format(ComputeTaskOutcomeToString(Outcome))}};
}
const IoHash TaskId = TaskStatus["h"sv].AsObjectAttachment();
@@ -767,7 +796,19 @@ namespace detail {
const IoHash SandboxHash = Sandbox.GetHash();
Data.Objects[SandboxHash] = std::move(Sandbox);
- CbObject Requirements = BuildRequirements("OSFamily == 'Windows'"sv, {}, false);
+
+ std::string_view HostPlatform = ApplyRecord.WorkerDescriptor["host"sv].AsString();
+ CbObject Requirements;
+ if (HostPlatform == "Win64"sv)
+ {
+ Requirements = BuildRequirements("OSFamily == 'Windows'"sv, {}, false);
+ }
+ else
+ {
+ Log().warn("process apply upstream FAILED, unsupported Host Platform '{}'", HostPlatform);
+ return false;
+ }
+
const IoHash RequirementsId = Requirements.GetHash();
Data.Objects[RequirementsId] = std::move(Requirements);
Data.RequirementsId = RequirementsId;