aboutsummaryrefslogtreecommitdiff
path: root/zenserver/upstream/zen.cpp
diff options
context:
space:
mode:
authorPer Larsson <[email protected]>2021-09-22 21:21:15 +0200
committerPer Larsson <[email protected]>2021-09-22 21:21:15 +0200
commitddb84cb54f7cf6777d2ccaed4338fff56b75922c (patch)
treebffa905f41526a5ed0ddbefed45573a069a2d845 /zenserver/upstream/zen.cpp
parentMade icon resource path relative, as it should be (diff)
downloadzen-ddb84cb54f7cf6777d2ccaed4338fff56b75922c.tar.xz
zen-ddb84cb54f7cf6777d2ccaed4338fff56b75922c.zip
Made upstream endpoints more resilient to failures by checking health/reconnecting at regular intervals.
Diffstat (limited to 'zenserver/upstream/zen.cpp')
-rw-r--r--zenserver/upstream/zen.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/zenserver/upstream/zen.cpp b/zenserver/upstream/zen.cpp
index 7f689d7f3..710d381c6 100644
--- a/zenserver/upstream/zen.cpp
+++ b/zenserver/upstream/zen.cpp
@@ -391,6 +391,11 @@ ZenStructuredCacheSession::SayHello()
Session.SetOption(cpr::Url{Uri.c_str()});
cpr::Response Response = Session.Get();
+ if (Response.error)
+ {
+ return {.ErrorCode = static_cast<int32_t>(Response.error.code), .Reason = std::move(Response.error.message)};
+ }
+
return {.Bytes = Response.downloaded_bytes, .ElapsedSeconds = Response.elapsed, .Success = Response.status_code == 200};
}
@@ -411,6 +416,11 @@ ZenStructuredCacheSession::GetCacheRecord(std::string_view BucketId, const IoHas
cpr::Response Response = Session.Get();
ZEN_DEBUG("GET {}", Response);
+ if (Response.error)
+ {
+ return {.ErrorCode = static_cast<int32_t>(Response.error.code), .Reason = std::move(Response.error.message)};
+ }
+
const bool Success = Response.status_code == 200;
const IoBuffer Buffer = Success ? IoBufferBuilder::MakeCloneFromMemory(Response.text.data(), Response.text.size()) : IoBuffer();
@@ -431,6 +441,11 @@ ZenStructuredCacheSession::GetCachePayload(std::string_view BucketId, const IoHa
cpr::Response Response = Session.Get();
ZEN_DEBUG("GET {}", Response);
+ if (Response.error)
+ {
+ return {.ErrorCode = static_cast<int32_t>(Response.error.code), .Reason = std::move(Response.error.message)};
+ }
+
const bool Success = Response.status_code == 200;
const IoBuffer Buffer = Success ? IoBufferBuilder::MakeCloneFromMemory(Response.text.data(), Response.text.size()) : IoBuffer();
@@ -455,6 +470,11 @@ ZenStructuredCacheSession::PutCacheRecord(std::string_view BucketId, const IoHas
cpr::Response Response = Session.Put();
ZEN_DEBUG("PUT {}", Response);
+ if (Response.error)
+ {
+ return {.ErrorCode = static_cast<int32_t>(Response.error.code), .Reason = std::move(Response.error.message)};
+ }
+
return {.Bytes = Response.uploaded_bytes,
.ElapsedSeconds = Response.elapsed,
.Success = (Response.status_code == 200 || Response.status_code == 201)};
@@ -475,6 +495,11 @@ ZenStructuredCacheSession::PutCachePayload(std::string_view BucketId, const IoHa
cpr::Response Response = Session.Put();
ZEN_DEBUG("PUT {}", Response);
+ if (Response.error)
+ {
+ return {.ErrorCode = static_cast<int32_t>(Response.error.code), .Reason = std::move(Response.error.message)};
+ }
+
return {.Bytes = Response.uploaded_bytes,
.ElapsedSeconds = Response.elapsed,
.Success = (Response.status_code == 200 || Response.status_code == 201)};