aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Kirchoff <[email protected]>2021-12-07 15:39:11 -0800
committerJoe Kirchoff <[email protected]>2021-12-07 15:39:11 -0800
commitb363c5be2eb4fb99b5c2aec2b691e50efdc69412 (patch)
tree92f015fe3e46a305b690058fab59d6a44b97446e
parentMerge pull request #33 from EpicGames/make_Materialize_threadsafe (diff)
downloadzen-b363c5be2eb4fb99b5c2aec2b691e50efdc69412.tar.xz
zen-b363c5be2eb4fb99b5c2aec2b691e50efdc69412.zip
Return status_code as ErrorCode from jupiter api if not successful
-rw-r--r--zenserver/upstream/jupiter.cpp72
-rw-r--r--zenserver/upstream/upstreamapply.cpp26
2 files changed, 72 insertions, 26 deletions
diff --git a/zenserver/upstream/jupiter.cpp b/zenserver/upstream/jupiter.cpp
index 1f82f4a04..f9be068ec 100644
--- a/zenserver/upstream/jupiter.cpp
+++ b/zenserver/upstream/jupiter.cpp
@@ -116,7 +116,11 @@ CloudCacheSession::GetDerivedData(std::string_view BucketId, std::string_view Ke
const bool Success = Response.status_code == 200;
const IoBuffer Buffer = Success ? IoBufferBuilder::MakeCloneFromMemory(Response.text.data(), Response.text.size()) : IoBuffer();
- return {.Response = Buffer, .Bytes = Response.downloaded_bytes, .ElapsedSeconds = Response.elapsed, .Success = Success};
+ return {.Response = Buffer,
+ .Bytes = Response.downloaded_bytes,
+ .ElapsedSeconds = Response.elapsed,
+ .ErrorCode = !Success ? Response.status_code : 0,
+ .Success = Success};
}
CloudCacheResult
@@ -161,7 +165,11 @@ CloudCacheSession::GetRef(std::string_view BucketId, const IoHash& Key, ZenConte
const bool Success = Response.status_code == 200;
const IoBuffer Buffer = Success ? IoBufferBuilder::MakeCloneFromMemory(Response.text.data(), Response.text.size()) : IoBuffer();
- return {.Response = Buffer, .Bytes = Response.downloaded_bytes, .ElapsedSeconds = Response.elapsed, .Success = Success};
+ return {.Response = Buffer,
+ .Bytes = Response.downloaded_bytes,
+ .ElapsedSeconds = Response.elapsed,
+ .ErrorCode = !Success ? Response.status_code : 0,
+ .Success = Success};
}
CloudCacheResult
@@ -198,7 +206,11 @@ CloudCacheSession::GetBlob(const IoHash& Key)
const IoBuffer Buffer =
Success && Response.text.size() > 0 ? IoBufferBuilder::MakeCloneFromMemory(Response.text.data(), Response.text.size()) : IoBuffer();
- return {.Response = Buffer, .Bytes = Response.downloaded_bytes, .ElapsedSeconds = Response.elapsed, .Success = Success};
+ return {.Response = Buffer,
+ .Bytes = Response.downloaded_bytes,
+ .ElapsedSeconds = Response.elapsed,
+ .ErrorCode = !Success ? Response.status_code : 0,
+ .Success = Success};
}
CloudCacheResult
@@ -234,7 +246,11 @@ CloudCacheSession::GetCompressedBlob(const IoHash& Key)
const bool Success = Response.status_code == 200;
const IoBuffer Buffer = Success ? IoBufferBuilder::MakeCloneFromMemory(Response.text.data(), Response.text.size()) : IoBuffer();
- return {.Response = Buffer, .Bytes = Response.downloaded_bytes, .ElapsedSeconds = Response.elapsed, .Success = Success};
+ return {.Response = Buffer,
+ .Bytes = Response.downloaded_bytes,
+ .ElapsedSeconds = Response.elapsed,
+ .ErrorCode = !Success ? Response.status_code : 0,
+ .Success = Success};
}
CloudCacheResult
@@ -270,7 +286,11 @@ CloudCacheSession::GetObject(const IoHash& Key)
const bool Success = Response.status_code == 200;
const IoBuffer Buffer = Success ? IoBufferBuilder::MakeCloneFromMemory(Response.text.data(), Response.text.size()) : IoBuffer();
- return {.Response = Buffer, .Bytes = Response.downloaded_bytes, .ElapsedSeconds = Response.elapsed, .Success = Success};
+ return {.Response = Buffer,
+ .Bytes = Response.downloaded_bytes,
+ .ElapsedSeconds = Response.elapsed,
+ .ErrorCode = !Success ? Response.status_code : 0,
+ .Success = Success};
}
CloudCacheResult
@@ -307,9 +327,12 @@ CloudCacheSession::PutDerivedData(std::string_view BucketId, std::string_view Ke
return {.ErrorCode = 401, .Reason = std::string("Invalid access token")};
}
+ const bool Success = Response.status_code == 200 || Response.status_code == 201;
+
return {.Bytes = Response.uploaded_bytes,
.ElapsedSeconds = Response.elapsed,
- .Success = (Response.status_code == 200 || Response.status_code == 201)};
+ .ErrorCode = !Success ? Response.status_code : 0,
+ .Success = Success};
}
CloudCacheResult
@@ -365,6 +388,7 @@ CloudCacheSession::PutRef(std::string_view BucketId, const IoHash& Key, IoBuffer
PutRefResult Result;
Result.Success = (Response.status_code == 200 || Response.status_code == 201);
+ Result.ErrorCode = !Result.Success ? Response.status_code : 0;
Result.Bytes = Response.uploaded_bytes;
Result.ElapsedSeconds = Response.elapsed;
@@ -429,6 +453,7 @@ CloudCacheSession::FinalizeRef(std::string_view BucketId, const IoHash& Key, con
FinalizeRefResult Result;
Result.Success = (Response.status_code == 200 || Response.status_code == 201);
+ Result.ErrorCode = !Result.Success ? Response.status_code : 0;
Result.Bytes = Response.uploaded_bytes;
Result.ElapsedSeconds = Response.elapsed;
@@ -479,9 +504,12 @@ CloudCacheSession::PutBlob(const IoHash& Key, IoBuffer Blob)
return {.ErrorCode = 401, .Reason = std::string("Invalid access token")};
}
+ const bool Success = Response.status_code == 200 || Response.status_code == 201;
+
return {.Bytes = Response.uploaded_bytes,
.ElapsedSeconds = Response.elapsed,
- .Success = (Response.status_code == 200 || Response.status_code == 201)};
+ .ErrorCode = !Success ? Response.status_code : 0,
+ .Success = Success};
}
CloudCacheResult
@@ -514,9 +542,12 @@ CloudCacheSession::PutCompressedBlob(const IoHash& Key, IoBuffer Blob)
return {.ErrorCode = 401, .Reason = std::string("Invalid access token")};
}
+ const bool Success = Response.status_code == 200 || Response.status_code == 201;
+
return {.Bytes = Response.uploaded_bytes,
.ElapsedSeconds = Response.elapsed,
- .Success = (Response.status_code == 200 || Response.status_code == 201)};
+ .ErrorCode = !Success ? Response.status_code : 0,
+ .Success = Success};
}
CloudCacheResult
@@ -549,9 +580,12 @@ CloudCacheSession::PutObject(const IoHash& Key, IoBuffer Object)
return {.ErrorCode = 401, .Reason = std::string("Invalid access token")};
}
+ const bool Success = Response.status_code == 200 || Response.status_code == 201;
+
return {.Bytes = Response.uploaded_bytes,
.ElapsedSeconds = Response.elapsed,
- .Success = (Response.status_code == 200 || Response.status_code == 201)};
+ .ErrorCode = !Success ? Response.status_code : 0,
+ .Success = Success};
}
CloudCacheResult
@@ -585,7 +619,9 @@ CloudCacheSession::RefExists(std::string_view BucketId, const IoHash& Key)
return {.ErrorCode = 401, .Reason = std::string("Invalid access token")};
}
- return {.ElapsedSeconds = Response.elapsed, .Success = Response.status_code == 200};
+ const bool Success = Response.status_code == 200;
+
+ return {.ElapsedSeconds = Response.elapsed, .ErrorCode = !Success ? Response.status_code : 0, .Success = Success};
}
CloudCacheResult
@@ -654,7 +690,9 @@ CloudCacheSession::PostComputeTasks(std::string_view ChannelId, IoBuffer TasksDa
return {.ErrorCode = 401, .Reason = std::string("Invalid access token")};
}
- return {.ElapsedSeconds = Response.elapsed, .Success = Response.status_code == 200};
+ const bool Success = Response.status_code == 200;
+
+ return {.ElapsedSeconds = Response.elapsed, .ErrorCode = !Success ? Response.status_code : 0, .Success = Success};
}
CloudCacheResult
@@ -690,7 +728,11 @@ CloudCacheSession::GetComputeUpdates(std::string_view ChannelId, const uint32_t
const bool Success = Response.status_code == 200;
const IoBuffer Buffer = Success ? IoBufferBuilder::MakeCloneFromMemory(Response.text.data(), Response.text.size()) : IoBuffer();
- return {.Response = Buffer, .Bytes = Response.downloaded_bytes, .ElapsedSeconds = Response.elapsed, .Success = Success};
+ return {.Response = Buffer,
+ .Bytes = Response.downloaded_bytes,
+ .ElapsedSeconds = Response.elapsed,
+ .ErrorCode = !Success ? Response.status_code : 0,
+ .Success = Success};
}
CloudCacheResult
@@ -726,7 +768,11 @@ CloudCacheSession::GetObjectTree(const IoHash& Key)
const bool Success = Response.status_code == 200;
const IoBuffer Buffer = Success ? IoBufferBuilder::MakeCloneFromMemory(Response.text.data(), Response.text.size()) : IoBuffer();
- return {.Response = Buffer, .Bytes = Response.downloaded_bytes, .ElapsedSeconds = Response.elapsed, .Success = Success};
+ return {.Response = Buffer,
+ .Bytes = Response.downloaded_bytes,
+ .ElapsedSeconds = Response.elapsed,
+ .ErrorCode = !Success ? Response.status_code : 0,
+ .Success = Success};
}
std::vector<IoHash>
diff --git a/zenserver/upstream/upstreamapply.cpp b/zenserver/upstream/upstreamapply.cpp
index e6e54428c..05be5f65c 100644
--- a/zenserver/upstream/upstreamapply.cpp
+++ b/zenserver/upstream/upstreamapply.cpp
@@ -185,12 +185,12 @@ namespace detail {
CloudCacheExistsResult ExistsResult = Session.BlobExists(Keys);
ElapsedSeconds += ExistsResult.ElapsedSeconds;
- if (ExistsResult.ErrorCode != 0)
+ if (!ExistsResult.Success)
{
return {.Bytes = Bytes,
.ElapsedSeconds = ElapsedSeconds,
- .ErrorCode = ExistsResult.ErrorCode,
- .Reason = std::move(ExistsResult.Reason)};
+ .ErrorCode = ExistsResult.ErrorCode ? ExistsResult.ErrorCode : -1,
+ .Reason = !ExistsResult.Reason.empty() ? std::move(ExistsResult.Reason) : "Failed to check if blobs exist"};
}
// TODO: Batch upload missing blobs
@@ -209,8 +209,8 @@ namespace detail {
{
return {.Bytes = Bytes,
.ElapsedSeconds = ElapsedSeconds,
- .ErrorCode = Result.ErrorCode,
- .Reason = std::move(Result.Reason)};
+ .ErrorCode = ExistsResult.ErrorCode ? ExistsResult.ErrorCode : -1,
+ .Reason = !ExistsResult.Reason.empty() ? std::move(ExistsResult.Reason) : "Failed to put blobs"};
}
}
@@ -236,12 +236,12 @@ namespace detail {
CloudCacheExistsResult ExistsResult = Session.ObjectExists(Keys);
ElapsedSeconds += ExistsResult.ElapsedSeconds;
- if (ExistsResult.ErrorCode != 0)
+ if (!ExistsResult.Success)
{
return {.Bytes = Bytes,
.ElapsedSeconds = ElapsedSeconds,
- .ErrorCode = ExistsResult.ErrorCode,
- .Reason = std::move(ExistsResult.Reason)};
+ .ErrorCode = ExistsResult.ErrorCode ? ExistsResult.ErrorCode : -1,
+ .Reason = !ExistsResult.Reason.empty() ? std::move(ExistsResult.Reason) : "Failed to check if objects exist"};
}
// TODO: Batch upload missing objects
@@ -260,8 +260,8 @@ namespace detail {
{
return {.Bytes = Bytes,
.ElapsedSeconds = ElapsedSeconds,
- .ErrorCode = Result.ErrorCode,
- .Reason = std::move(Result.Reason)};
+ .ErrorCode = ExistsResult.ErrorCode ? ExistsResult.ErrorCode : -1,
+ .Reason = !ExistsResult.Reason.empty() ? std::move(ExistsResult.Reason) : "Failed to put objects"};
}
}
@@ -330,7 +330,7 @@ namespace detail {
CloudCacheResult UpdatesResult = Session.GetComputeUpdates(m_ChannelId);
Bytes += UpdatesResult.Bytes;
ElapsedSeconds += UpdatesResult.ElapsedSeconds;
- if (UpdatesResult.ErrorCode != 0)
+ if (!UpdatesResult.Success)
{
return {.Error{.ErrorCode = UpdatesResult.ErrorCode, .Reason = std::move(UpdatesResult.Reason)},
.Bytes = Bytes,
@@ -509,7 +509,7 @@ namespace detail {
CloudCacheResult ObjectResult = Session.GetObject(It.first);
Bytes += ObjectTreeResult.Bytes;
ElapsedSeconds += ObjectTreeResult.ElapsedSeconds;
- if (ObjectTreeResult.ErrorCode != 0)
+ if (!ObjectTreeResult.Success)
{
return {.Error{.ErrorCode = ObjectResult.ErrorCode, .Reason = std::move(ObjectResult.Reason)},
.Bytes = Bytes,
@@ -533,7 +533,7 @@ namespace detail {
CloudCacheResult BlobResult = Session.GetBlob(It.first);
Bytes += ObjectTreeResult.Bytes;
ElapsedSeconds += ObjectTreeResult.ElapsedSeconds;
- if (BlobResult.ErrorCode != 0)
+ if (!BlobResult.Success)
{
return {.Error{.ErrorCode = BlobResult.ErrorCode, .Reason = std::move(BlobResult.Reason)},
.Bytes = Bytes,