Long poll completion buffer to prevent timeouts #4425
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What changed?
Leave some long poll completion room on the server side.
When little time is left until expiration we reserve some time
longPollCompletionBuffer
when creating a timer to return earlier, so that this request will be able to finish without timeout.This PR comes with companion client PR cadence-workflow/cadence-go-client#1123. Which will prevent doing additional request all together when too little time is left.
If an older client is used, we still need a safeguard timeout error. Otherwise client would be stuck in long poll loop for the duration of completion buffer, which can result in additional request being made that return empty responses.
Related previous PR: #3830
Why?
The idea here is to prevent context timeout errors, which affects SLAs and is not truly an error.
How did you test it?
Locally. With go client changes and without go client changes.
Potential risks
Release notes
Documentation Changes