-
Notifications
You must be signed in to change notification settings - Fork 506
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Merged by Bors] - Update segment.rs #2950
Closed
morenol
wants to merge
4
commits into
master
from
do-not-fail-if-max-offset-is-not-in-current-segment
Closed
[Merged by Bors] - Update segment.rs #2950
morenol
wants to merge
4
commits into
master
from
do-not-fail-if-max-offset-is-not-in-current-segment
Conversation
This file contains 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
sehz
reviewed
Jan 20, 2023
nacardin
approved these changes
Jan 20, 2023
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not very familiar in this area, but looks logical to me
sehz
approved these changes
Jan 20, 2023
bors r+ |
bors bot
pushed a commit
that referenced
this pull request
Jan 20, 2023
Currently when using `Isolation::ReadCommitted`, we read records until current HW. https://github.com/infinyon/fluvio/blob/934544dec2403cd65113eda5c2a6fb6b509793d4/crates/fluvio-storage/src/replica.rs#L106 Here, there are two scenarios. If Start offset is greater or equal than base offset of current active segment. Then read_records is call in that segment. If HW is greater than last offset in that segment it will fail. (I think that this scenario should not happen since current active segment should be ok) https://github.com/infinyon/fluvio/blob/934544dec2403cd65113eda5c2a6fb6b509793d4/crates/fluvio-storage/src/replica.rs#L348 On the other hand, if the start offset is in a old segment, it calls find_slice, that first checks in which segment is the start offset and then call `read_records` there. This read_records will fail if that HW offset is not in the current segment. https://github.com/infinyon/fluvio/blob/934544dec2403cd65113eda5c2a6fb6b509793d4/crates/fluvio-storage/src/replica.rs#L361 This PR updates read_records to truncate max_offset to end_offset of current segment if it is larger than that so we can read records of that segment without failures Co-authored-by: Luis Moreno <morenol@users.noreply.github.com>
tjtelan
approved these changes
Jan 20, 2023
Pull request successfully merged into master. Build succeeded: |
bors
bot
deleted the
do-not-fail-if-max-offset-is-not-in-current-segment
branch
January 20, 2023 19:49
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.
Currently when using
Isolation::ReadCommitted
, we read records until current HW.fluvio/crates/fluvio-storage/src/replica.rs
Line 106 in 934544d
Here, there are two scenarios. If Start offset is greater or equal than base offset of current active segment. Then read_records is call in that segment. If HW is greater than last offset in that segment it will fail. (I think that this scenario should not happen since current active segment should be ok)
fluvio/crates/fluvio-storage/src/replica.rs
Line 348 in 934544d
On the other hand, if the start offset is in a old segment, it calls find_slice, that first checks in which segment is the start offset and then call
read_records
there. This read_records will fail if that HW offset is not in the current segment.fluvio/crates/fluvio-storage/src/replica.rs
Line 361 in 934544d
This PR updates read_records to truncate max_offset to end_offset of current segment if it is larger than that so we can read records of that segment without failures