[api] Configure keep-alive timeout for HTTP BLOB descriptors - #9324
Open
wwj6591812 wants to merge 2 commits into
Open
[api] Configure keep-alive timeout for HTTP BLOB descriptors#9324wwj6591812 wants to merge 2 commits into
wwj6591812 wants to merge 2 commits into
Conversation
wwj6591812
marked this pull request as ready for review
August 21, 2026 01:15
Contributor
Author
|
@JingsongLi hi, please cc, thx |
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.
Purpose
Add a table option to cap how long HTTP connections used by descriptor-backed BLOB reads remain eligible for reuse after a response completes.
blob-descriptor.http.keep-alive-timeoutis unset by default, so existing behavior remains unchanged. This option is an idle connection reuse cap; it is not a connect, socket, or response-body timeout.Changes
Relationship to #9271
#9271 recovers response bodies that are truncated while an active GET is being consumed. This change addresses a different boundary: it limits reuse of idle pooled connections after a response has completed. The two mechanisms are complementary; configuring this option does not replace body-truncation recovery.
Scope and performance
Unconfigured reads keep using the existing shared client and behavior. Configured BLOB reads use a separate bounded pool (100 total/per route). Before leasing a configured connection, idle entries older than the requested cap are removed; a smaller cap can reduce connection reuse but does not interrupt leased or active response streams.
Tests
HttpClientUtilsTest(39 tests)UriReaderFactoryTestandBlobDescriptorUtilsTest(20 tests)CoreOptionsTestandBlobDescriptorReaderFactoryTest(18 tests)BlobTableITCase#testWriteBlobWithHttpUrlDescriptorConfigOptionsDocsCompletenessITCasegit diff --checkAPI and format
This adds one optional table configuration key. It does not change the BLOB descriptor or table storage format.