hadoop git commit: HDFS-7707. Edit log corruption due to delayed block removal again. Contributed by Yongjun Zhang (cherry picked from commit 843806d03ab1a24f191782f42eb817505228eb9f)
Repository: hadoop Updated Branches: refs/heads/branch-2.6.1 e917ef3cf -> a1c3e6a05 HDFS-7707. Edit log corruption due to delayed block removal again. Contributed by Yongjun Zhang (cherry picked from commit 843806d03ab1a24f191782f42eb817505228eb9f) (cherry picked from commit c428d303f67bef3a7df12153947c6b0199a0938b) (cherry picked from commit 21d8b22feef2fc9f6793d9c157391b142368e588) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/a1c3e6a0 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/a1c3e6a0 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/a1c3e6a0 Branch: refs/heads/branch-2.6.1 Commit: a1c3e6a058e4041ce7d1601867154b9ddd0d9c30 Parents: e917ef3 Author: Kihwal LeeAuthored: Tue Feb 3 14:45:15 2015 -0600 Committer: Vinod Kumar Vavilapalli Committed: Mon Aug 31 15:55:07 2015 -0700 -- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 ++ .../hdfs/server/namenode/FSNamesystem.java | 14 +++-- .../TestCommitBlockSynchronization.java | 4 ++- .../hdfs/server/namenode/TestDeleteRace.java| 32 +++- 4 files changed, 43 insertions(+), 10 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/a1c3e6a0/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index ec049b0..648f1ac 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -67,6 +67,9 @@ Release 2.6.1 - UNRELEASED HDFS-7575. Upgrade should generate a unique storage ID for each volume. (Arpit Agarwal) +HDFS-7707. Edit log corruption due to delayed block removal again. +(Yongjun Zhang via kihwal) + Release 2.6.0 - 2014-11-18 INCOMPATIBLE CHANGES http://git-wip-us.apache.org/repos/asf/hadoop/blob/a1c3e6a0/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java index 7077b68..8e5a2db 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java @@ -238,6 +238,7 @@ import org.apache.hadoop.hdfs.server.namenode.ha.HAContext; import org.apache.hadoop.hdfs.server.namenode.ha.StandbyCheckpointer; import org.apache.hadoop.hdfs.server.namenode.metrics.FSNamesystemMBean; import org.apache.hadoop.hdfs.server.namenode.metrics.NameNodeMetrics; +import org.apache.hadoop.hdfs.server.namenode.snapshot.DirectoryWithSnapshotFeature; import org.apache.hadoop.hdfs.server.namenode.snapshot.Snapshot; import org.apache.hadoop.hdfs.server.namenode.snapshot.SnapshotManager; import org.apache.hadoop.hdfs.server.namenode.startupprogress.Phase; @@ -6864,13 +6865,22 @@ public class FSNamesystem implements Namesystem, FSClusterStats, INode tmpChild = file; INodeDirectory tmpParent = file.getParent(); while (true) { - if (tmpParent == null || - tmpParent.searchChildren(tmpChild.getLocalNameBytes()) < 0) { + if (tmpParent == null) { return true; } + + INode childINode = tmpParent.getChild(tmpChild.getLocalNameBytes(), + Snapshot.CURRENT_STATE_ID); + if (childINode == null || !childINode.equals(tmpChild)) { +// a newly created INode with the same name as an already deleted one +// would be a different INode than the deleted one +return true; + } + if (tmpParent.isRoot()) { break; } + tmpChild = tmpParent; tmpParent = tmpParent.getParent(); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/a1c3e6a0/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCommitBlockSynchronization.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCommitBlockSynchronization.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCommitBlockSynchronization.java index bd71870..816c7c8 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCommitBlockSynchronization.java +++
hadoop git commit: HDFS-7707. Edit log corruption due to delayed block removal again. Contributed by Yongjun Zhang
Repository: hadoop Updated Branches: refs/heads/trunk 21d80b3dd - 843806d03 HDFS-7707. Edit log corruption due to delayed block removal again. Contributed by Yongjun Zhang Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/843806d0 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/843806d0 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/843806d0 Branch: refs/heads/trunk Commit: 843806d03ab1a24f191782f42eb817505228eb9f Parents: 21d80b3 Author: Kihwal Lee kih...@apache.org Authored: Tue Feb 3 14:45:15 2015 -0600 Committer: Kihwal Lee kih...@apache.org Committed: Tue Feb 3 14:45:15 2015 -0600 -- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 ++ .../hdfs/server/namenode/FSNamesystem.java | 14 +++-- .../TestCommitBlockSynchronization.java | 4 ++- .../hdfs/server/namenode/TestDeleteRace.java| 32 +++- 4 files changed, 43 insertions(+), 10 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/843806d0/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index d6283b9..7a0fdb6 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -830,6 +830,9 @@ Release 2.7.0 - UNRELEASED HDFS-6651. Deletion failure can leak inodes permanently. (Jing Zhao via wheat9) +HDFS-7707. Edit log corruption due to delayed block removal again. +(Yongjun Zhang via kihwal) + Release 2.6.1 - UNRELEASED INCOMPATIBLE CHANGES http://git-wip-us.apache.org/repos/asf/hadoop/blob/843806d0/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java index ebdec1b..e5ecb53 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java @@ -227,6 +227,7 @@ import org.apache.hadoop.hdfs.server.namenode.ha.HAContext; import org.apache.hadoop.hdfs.server.namenode.ha.StandbyCheckpointer; import org.apache.hadoop.hdfs.server.namenode.metrics.FSNamesystemMBean; import org.apache.hadoop.hdfs.server.namenode.metrics.NameNodeMetrics; +import org.apache.hadoop.hdfs.server.namenode.snapshot.DirectoryWithSnapshotFeature; import org.apache.hadoop.hdfs.server.namenode.snapshot.Snapshot; import org.apache.hadoop.hdfs.server.namenode.snapshot.SnapshotManager; import org.apache.hadoop.hdfs.server.namenode.startupprogress.Phase; @@ -6012,13 +6013,22 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean, INode tmpChild = file; INodeDirectory tmpParent = file.getParent(); while (true) { - if (tmpParent == null || - tmpParent.searchChildren(tmpChild.getLocalNameBytes()) 0) { + if (tmpParent == null) { return true; } + + INode childINode = tmpParent.getChild(tmpChild.getLocalNameBytes(), + Snapshot.CURRENT_STATE_ID); + if (childINode == null || !childINode.equals(tmpChild)) { +// a newly created INode with the same name as an already deleted one +// would be a different INode than the deleted one +return true; + } + if (tmpParent.isRoot()) { break; } + tmpChild = tmpParent; tmpParent = tmpParent.getParent(); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/843806d0/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCommitBlockSynchronization.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCommitBlockSynchronization.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCommitBlockSynchronization.java index eae65cc..d88227a 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCommitBlockSynchronization.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCommitBlockSynchronization.java @@ -54,7 +54,9 @@ public class TestCommitBlockSynchronization { // set file's parent as root and put the file to inodeMap, so // FSNamesystem's isFileDeleted() method will return false on
hadoop git commit: HDFS-7707. Edit log corruption due to delayed block removal again. Contributed by Yongjun Zhang (cherry picked from commit 843806d03ab1a24f191782f42eb817505228eb9f)
Repository: hadoop Updated Branches: refs/heads/branch-2 c0b1311a9 - c428d303f HDFS-7707. Edit log corruption due to delayed block removal again. Contributed by Yongjun Zhang (cherry picked from commit 843806d03ab1a24f191782f42eb817505228eb9f) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/c428d303 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/c428d303 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/c428d303 Branch: refs/heads/branch-2 Commit: c428d303f67bef3a7df12153947c6b0199a0938b Parents: c0b1311 Author: Kihwal Lee kih...@apache.org Authored: Tue Feb 3 14:45:15 2015 -0600 Committer: Kihwal Lee kih...@apache.org Committed: Tue Feb 3 14:46:24 2015 -0600 -- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 ++ .../hdfs/server/namenode/FSNamesystem.java | 14 +++-- .../TestCommitBlockSynchronization.java | 4 ++- .../hdfs/server/namenode/TestDeleteRace.java| 32 +++- 4 files changed, 43 insertions(+), 10 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/c428d303/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index 440be44..f9770c3 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -548,6 +548,9 @@ Release 2.7.0 - UNRELEASED HDFS-6651. Deletion failure can leak inodes permanently. (Jing Zhao via wheat9) +HDFS-7707. Edit log corruption due to delayed block removal again. +(Yongjun Zhang via kihwal) + Release 2.6.1 - UNRELEASED INCOMPATIBLE CHANGES http://git-wip-us.apache.org/repos/asf/hadoop/blob/c428d303/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java index 3f5cc4a..edca0c8 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java @@ -231,6 +231,7 @@ import org.apache.hadoop.hdfs.server.namenode.ha.HAContext; import org.apache.hadoop.hdfs.server.namenode.ha.StandbyCheckpointer; import org.apache.hadoop.hdfs.server.namenode.metrics.FSNamesystemMBean; import org.apache.hadoop.hdfs.server.namenode.metrics.NameNodeMetrics; +import org.apache.hadoop.hdfs.server.namenode.snapshot.DirectoryWithSnapshotFeature; import org.apache.hadoop.hdfs.server.namenode.snapshot.Snapshot; import org.apache.hadoop.hdfs.server.namenode.snapshot.SnapshotManager; import org.apache.hadoop.hdfs.server.namenode.startupprogress.Phase; @@ -5999,13 +6000,22 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean, INode tmpChild = file; INodeDirectory tmpParent = file.getParent(); while (true) { - if (tmpParent == null || - tmpParent.searchChildren(tmpChild.getLocalNameBytes()) 0) { + if (tmpParent == null) { return true; } + + INode childINode = tmpParent.getChild(tmpChild.getLocalNameBytes(), + Snapshot.CURRENT_STATE_ID); + if (childINode == null || !childINode.equals(tmpChild)) { +// a newly created INode with the same name as an already deleted one +// would be a different INode than the deleted one +return true; + } + if (tmpParent.isRoot()) { break; } + tmpChild = tmpParent; tmpParent = tmpParent.getParent(); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/c428d303/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCommitBlockSynchronization.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCommitBlockSynchronization.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCommitBlockSynchronization.java index eae65cc..d88227a 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCommitBlockSynchronization.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCommitBlockSynchronization.java @@ -54,7 +54,9 @@ public class TestCommitBlockSynchronization { // set file's parent as root and put the file to