Fsync after writing global seq number in ExternalSstFileIngestionJob

Summary:
Fsync after writing global sequence number to the ingestion file in ExternalSstFileIngestionJob. Otherwise the file metadata could be incorrect.
Closes https://github.com/facebook/rocksdb/pull/3644

Differential Revision: D7373813

Pulled By: sagar0

fbshipit-source-id: 4da2c9e71a8beb5c08b4ac955f288ee1576358b8
main
Sagar Vemuri 7 years ago committed by Facebook Github Bot
parent 4d51feab0b
commit 2e3d407778
  1. 2
      HISTORY.md
  2. 3
      db/external_sst_file_ingestion_job.cc

@ -5,7 +5,7 @@
### New Features ### New Features
### Bug Fixes ### Bug Fixes
* Fsync after writing global seq number to the ingestion file in ExternalSstFileIngestionJob.
## 5.13.0 (3/20/2018) ## 5.13.0 (3/20/2018)
### Public API Change ### Public API Change

@ -510,6 +510,9 @@ Status ExternalSstFileIngestionJob::AssignGlobalSeqnoForIngestedFile(
std::string seqno_val; std::string seqno_val;
PutFixed64(&seqno_val, seqno); PutFixed64(&seqno_val, seqno);
status = rwfile->Write(file_to_ingest->global_seqno_offset, seqno_val); status = rwfile->Write(file_to_ingest->global_seqno_offset, seqno_val);
if (status.ok()) {
status = rwfile->Fsync();
}
if (status.ok()) { if (status.ok()) {
file_to_ingest->assigned_seqno = seqno; file_to_ingest->assigned_seqno = seqno;
} }

Loading…
Cancel
Save