From d757355cbf0906619718531b11d51d0e040d90f1 Mon Sep 17 00:00:00 2001 From: Siying Dong Date: Mon, 26 Jun 2017 12:32:52 -0700 Subject: [PATCH] Fix bug that flush doesn't respond to fsync result Summary: With a regression bug was introduced two years ago, by https://github.com/facebook/rocksdb/commit/6e9fbeb27c38329f33ae541302c44c8db8374f8c , we fail to check return status of fsync call. This can cause we miss the information from the file system and can potentially cause corrupted data which we could have been detected. Closes https://github.com/facebook/rocksdb/pull/2495 Reviewed By: ajkr Differential Revision: D5321949 Pulled By: siying fbshipit-source-id: c68117914bb40700198fc37d0e4c63163a8a1031 --- HISTORY.md | 3 +++ db/builder.cc | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/HISTORY.md b/HISTORY.md index cabf93b73..90bee1e14 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -21,6 +21,9 @@ * Introduce WriteOptions.low_pri. If it is true, low priority writes will be throttled if the compaction is behind. * `DB::IngestExternalFile()` now supports ingesting files into a database containing range deletions. +### Bu Fixes +* Shouldn't ignore return value of fsync() in flush. + ## 5.5.0 (05/17/2017) ### New Features * FIFO compaction to support Intra L0 compaction too with CompactionOptionsFIFO.allow_compaction=true. diff --git a/db/builder.cc b/db/builder.cc index 0c0bbb236..ec7703619 100644 --- a/db/builder.cc +++ b/db/builder.cc @@ -179,7 +179,7 @@ Status BuildTable( // Finish and check for file errors if (s.ok() && !empty) { StopWatch sw(env, ioptions.statistics, TABLE_SYNC_MICROS); - file_writer->Sync(ioptions.use_fsync); + s = file_writer->Sync(ioptions.use_fsync); } if (s.ok() && !empty) { s = file_writer->Close();