fix: update BlobAppendableUpload implementation to periodically flush for large writes#3278
Merged
BenWhitehead merged 1 commit intomainfrom Sep 5, 2025
Merged
Conversation
… for large writes This main idea here is to allow async incremental clearing of the outbound queue even when large writes are performed. Previously, when using the MinFlushStrategy, if a large write was performed (larger than maxPendingBytes) a single `flush: true state_lookup: true` would be sent to GCS, thereby making it so that no new writes could be accepted until the full `maxPendingBytes` where ack'd. This change updates so that if a write is larger than `minFlushSize` a message will be annotated `flush: true state_lookup: true`. This doesn't necessarily mean that a flush will be done every `minFlushSize` as the message packed can be up to 2MiB, this will simply annotate a message as `flush: true state_lookup: true` if it has been at least `minFlushSize` bytes since we sent a flush.
BrandonY
approved these changes
Sep 4, 2025
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.
The main idea here is to allow async incremental clearing of the outbound queue even when large writes are performed.
Previously, when using the MinFlushStrategy, if a large write was performed (larger than maxPendingBytes) a single
flush: true state_lookup: truewould be sent to GCS, thereby making it so that no new writes could be accepted until the fullmaxPendingByteswhere ack'd. This change updates so that if a write is larger thanminFlushSizea message will be annotatedflush: true state_lookup: true. This doesn't necessarily mean that a flush will be done everyminFlushSizeas the message packed can be up to 2MiB, this will simply annotate a message asflush: true state_lookup: trueif it has been at leastminFlushSizebytes since we sent a flush.