Copy HttpContent into array to avoid buffer being released too early #4194
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.
We've run into issues when decoding large JSON bodies using the netty cats backend. For some requests, decoding failed, due to parts of the input JSON missing.
The issue doesn't occur every time and is not deterministic, but we were able to track it down to this PR: #3489.
We believe that the issue is caused by the buffer sometimes being released to early, as the fs2
Chunk
doesn't copy it andhttpContent.release()
sometimes trigger a deallocation by netty before the buffer is read into an array later. Our proposed fix is to explicitly copy the buffer into an array and only then callrelease()
.We've added a new performance test for large JSON bodies that reliably shows the error. You should be able to compare the difference yourself by running:
Before:


After:
@pektinasen