Make client more resilient with better response parser, resource tracking #28
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.
Previously we had a TrackedHttpClient wrapper class that would keep track of
requests / responses used by the client. When you closed the client, it would
go through all associated resources that were still available (not GCed) and
close them too. However, TrackedHttpClient had some extra delegate methods that
caused it to circumvent the resource tracking in most cases. This has been fixed.
Also, in some cases where servers responded with nonsensical / invalid data, the
default response parser would hang. This would eventually cause connection pool
timeouts, since all connections would be stuck trying to parse garbage responses.
I've updated the response parser in use by our client to be less eager to make
order out of noise. This should allow garbage responses to throw an error, and
avoid locking up the system.