Fix processing of redis multibulk (nested array) responses (from eval, new commands, etc) #612
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.
Problem
Redis hangs or misbehaves when processing multibulk redis responses (nested arrays)
Solution
Keep track of how many more elements need to be parsed when parsing the redis response,
as well as whether the top-level value is a multi-bulk response
Continue to properly count the number of top level array elements for request types that can be fragmented such as multi-gets
Result
twemproxy will now be able to proxy results of
eval
and other commands when they return nested arrays(this will help in implementing
command
andgeoradiuswithcoord
. commands in the future)This is an amended version of #565