diff options
| author | Joe Kirchoff <[email protected]> | 2021-11-15 09:48:04 -0800 |
|---|---|---|
| committer | Joe Kirchoff <[email protected]> | 2021-11-15 09:48:04 -0800 |
| commit | d1b8635b9b50f7b55b4caea193edaa29b6da0544 (patch) | |
| tree | 6ab1c74c6c6848b32a6408407a6c0eea9da25326 /zenserver/upstream/upstreamapply.cpp | |
| parent | Handle 'partial on error' cache policy. (diff) | |
| download | zen-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.cpp | 45 |
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; |