Skip to content

Commit 579738f

Browse files
committed
RestClient: only single long poll request
PR #371 introduced that long polling subscriptions would always fetch the next n (defaulted to 3) long polling indices to reduce the latency from roundtrip to single trip. For the happy path this works well, but in case of errors, the logic has to be improved to correctly handle responses arriving out of order. With the current logic this will re-fetch already received updates and lead to avalanches of requests, as these re-fetched requests will then also again arive out of order and refetch old data. Before increasing this value again, it should be ensured that the responses are either re-sorted on arrival or older updates correctly dropped without scheduling new requests. This change restores the behaviour from before the changes but keeps the logic in place so it can be reenabled after fixing the error-handling. Signed-off-by: Alexander Krimm <[email protected]>
1 parent a67b115 commit 579738f

File tree

2 files changed

+2
-2
lines changed

2 files changed

+2
-2
lines changed

src/client/include/RestClientEmscripten.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ struct SubscriptionPayload : FetchPayload {
140140
MIME::MimeType _mimeType;
141141
std::size_t _update = 0;
142142

143-
static constexpr std::size_t kParallelLongPollingRequests = 3;
143+
static constexpr std::size_t kParallelLongPollingRequests = 1; // increasing this value could reduce latency but needs some more robust error handling for unexpected updates
144144
std::vector<std::uint64_t> _requestedIndexes;
145145

146146
SubscriptionPayload(Command &&_command, MIME::MimeType mimeType)

src/client/include/RestClientNative.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ struct RequestResponse {
107107
}
108108
};
109109

110-
constexpr std::size_t kParallelLongPollingRequests = 3;
110+
constexpr std::size_t kParallelLongPollingRequests = 1; // increasing this value could reduce latency but needs some more robust error handling for unexpected updates
111111

112112
struct Subscription {
113113
client::Command request;

0 commit comments

Comments
 (0)