release-20.1: kv/kvserver: Remove buffering from SSTSnapshotStorageFile #50847
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.
Backport 1/1 commits from #50831.
/cc @cockroachdb/release
When investigating a durability violation around ingested sstables
that disappeared after a power outage, we realized that
SSTSnapshotStorageFile does not flush its buffer before doing
a Sync(). When used with a pebble SSTWriter, we expect Sync()
to ensure all bytes written to that file are synced to disk,
which is not what was happening here for the last couple bytes
written to the buffer.
This change removes buffering from SSTSnapshotStorageFile
as pebble's SST writer already does its own buffering. This
makes Sync() do what it is expected to do.
Release note (bug fix): Fix a bug where a badly timed power outage
or system crash could result in an error upon process restart.