Repository: hadoop
Updated Branches:
  refs/heads/branch-3.0 f270818ed -> b83004076


HDFS-11915. Sync rbw dir on the first hsync() to avoid file lost on power 
failure. Contributed by Vinayakumar B.

(cherry picked from commit d6c31a3e6b60c4b8af9ae4661f16614805654e59)


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/b8300407
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/b8300407
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/b8300407

Branch: refs/heads/branch-3.0
Commit: b830040766b96fc7bc01057232565939d2212613
Parents: f270818
Author: Wei-Chiu Chuang <[email protected]>
Authored: Thu Dec 7 14:50:30 2017 -0800
Committer: Wei-Chiu Chuang <[email protected]>
Committed: Fri Jan 12 10:42:58 2018 -0800

----------------------------------------------------------------------
 .../org/apache/hadoop/hdfs/server/datanode/BlockReceiver.java   | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/b8300407/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockReceiver.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockReceiver.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockReceiver.java
index c052d52..afb9e2a 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockReceiver.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockReceiver.java
@@ -126,6 +126,7 @@ class BlockReceiver implements Closeable {
 
   private boolean syncOnClose;
   private volatile boolean dirSyncOnFinalize;
+  private boolean dirSyncOnHSyncDone = false;
   private long restartBudget;
   /** the reference of the volume where the block receiver writes to */
   private ReplicaHandler replicaHandler;
@@ -424,6 +425,10 @@ class BlockReceiver implements Closeable {
       }
       flushTotalNanos += flushEndNanos - flushStartNanos;
     }
+    if (isSync && !dirSyncOnHSyncDone && replicaInfo instanceof LocalReplica) {
+      ((LocalReplica) replicaInfo).fsyncDirectory();
+      dirSyncOnHSyncDone = true;
+    }
     if (checksumOut != null || streams.getDataOut() != null) {
       datanode.metrics.addFlushNanos(flushTotalNanos);
       if (isSync) {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to