This repository has been archived by the owner on Jan 22, 2025. It is now read-only.
remaining_bytes aligns len since all writes will align first #34171
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.
Problem
ancient append vec appending relies on a reliable count of remaining bytes. It turns out that the append vec's
len()
is up to the last written byte. This can be non-u64 aligned. The result is if we are to append more to the file, the first operation will be au64_align!
. This means thatremaining_bytes
was reporting too many bytes. Not all those bytes could be written to, thanks to the bytes wasted for alignment. The result was that writes could fail, causing an attempt at creating a second append vec for the slot. This is no longer allowed and will fail with an assert.Summary of Changes
Align
len()
so that remaining bytes returns an accurate number.Fixes #