From 35fccfda3ebc9f7b7c271e7897f666f5aa980ea7 Mon Sep 17 00:00:00 2001 From: Kihwal Lee Date: Fri, 19 Sep 2014 09:01:27 -0500 Subject: [PATCH] HDFS-7065. Pipeline close recovery race can cause block corruption. Contributed by Kihwal Lee. (cherry picked from commit bf27b9ca574592ef603e126bacb9b6a37c9eb5c6) --- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 2 ++ .../hdfs/server/datanode/fsdataset/impl/FsDatasetImpl.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index aeef95a51a4..b25f714a1c0 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -440,6 +440,8 @@ Release 2.6.0 - UNRELEASED HDFS-6840. Clients are always sent to the same datanode when read is off rack. (wang) + HDFS-7065. Pipeline close recovery race can cause block corruption (kihwal) + BREAKDOWN OF HDFS-6134 AND HADOOP-10150 SUBTASKS AND RELATED JIRAS HDFS-6387. HDFS CLI admin tool for creating & deleting an diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl.java index b87552d6680..57706f818c8 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl.java @@ -904,7 +904,7 @@ class FsDatasetImpl implements FsDatasetSpi { } @Override // FsDatasetSpi - public String recoverClose(ExtendedBlock b, long newGS, + public synchronized String recoverClose(ExtendedBlock b, long newGS, long expectedBlockLen) throws IOException { LOG.info("Recover failed close " + b); // check replica's state