[client] Prevent EOF during concurrent remote log downloads - #3816
Open
fxbing wants to merge 1 commit into
Open
Conversation
- Recheck fetchable buckets under the fetcher lock to avoid stale duplicate requests. - Download into unique temporary files and atomically publish complete segments. - Add deterministic regressions for stale fetch snapshots and open-reader safety.
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
Linked issue: close #3815
LogFetchercould reuse a fetchable-bucket snapshot captured before a metadata update. If a response populated the buffer during that update, the same bucket could be fetched again. A duplicate remote-log download then truncated the local segment while an existing reader was still using it, causingUnexpected EOF.Brief change log
LogFetcherlock after metadata updates.Tests
LogFetcherTestandRemoteLogDownloaderTest: 13 tests passed../mvnw -o -pl fluss-client validateAPI and Format
No public API or storage format changes.
Documentation
No documentation changes are required.
Generative AI disclosure
Yes. OpenAI Codex was used to assist with implementation and review.