]> git-server-git.apps.pok.os.sepia.ceph.com Git - rocksdb.git/commitdiff
Fix bug that flush doesn't respond to fsync result
authorSiying Dong <siying.d@fb.com>
Mon, 26 Jun 2017 19:32:52 +0000 (12:32 -0700)
committerAndrew Kryczka <andrewkr@fb.com>
Wed, 28 Jun 2017 22:48:52 +0000 (15:48 -0700)
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
db/builder.cc

index 8e8c0eec2b81f34aad452e5e49995985eef1b1d4..f6fa9a0053e5c3e669f0a51631c2460d1c7ccebf 100644 (file)
@@ -1,4 +1,8 @@
 # Rocksdb Change Log
+## 5.4.7 (06/28/2017)
+### Bug Fixes
+* Shouldn't ignore return value of fsync() in flush.
+
 ## 5.4.6 (05/30/2017)
 ### Bug Fixes
 * Fix db_bench with lite build.
index 65ffd449ad8a4ba2dacec2dfcacd23e130d74e44..83d788cf6f815104ca8dba1df42916025674f398 100644 (file)
@@ -177,7 +177,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();