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
This commit is contained in:
Sagar Vemuri 2018-03-22 17:34:52 -07:00 committed by Facebook Github Bot
parent 4d51feab0b
commit 2e3d407778
2 changed files with 4 additions and 1 deletions

View File

@ -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

View File

@ -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;
} }