feat: reprepare and retry prepared statements#970
Open
dowzhong wants to merge 8 commits into
Open
Conversation
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
#943
My attempt at implementing automatic reprepare+retry of prepared statements that hit a cache error.
I thought the place place to do this would be in the server impl. That way, we can avoid dealing with sharding and duplicating the retry logic at different points. Please let me know if I should move it elsewhere though.
The main piece of work here is a small state machine in each server that keeps track of what the current batch of messages are, and if they've returned with expected. That way, we can know which messages we need to retry, and which messages we shouldn't send again. An example being
In this case, we want to reprepare and only retry from bind onwards.