Attempt parallel connections to all addrs when connecting #1068
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.
Part of the "happy eyeballs" recommendations.
Note I attempted to preserve the exception throwing behavior we had previously. i.e. if I'm the last task running and errors, I'll close the
Channel{TCPSocket}
with my exception which will then propagate up. We could possibly accumulate all the exceptions into a CompositeException, but meh, I'm not sure if that adds much value.In addition to the new parallel connecting, we're also adjusting how the
connect_timeout
is implemented. Instead of only applying to the tcp connection, we now wrap the entirenewconnection
call, which means any ssl handshake timing will also count towards the timeout. We saw a case at RelationalAI where we had a reasonable connect_timeout (10s), yet then saw long requests (>50s) where all the time was reported in the connection layer. It would seem to suggest that the ssl layer is somehow getting stuck or slow, so the proposal here is that if the ssl operations also count, then we'll more aggressively cancel/restart the connection process in the case of slow ssl handshaking.