This is an automated email from the ASF dual-hosted git repository. weichiu pushed a commit to branch branch-3.1 in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/branch-3.1 by this push: new 8ce5015 HDFS-13693. Remove unnecessary search in INodeDirectory.addChild during image loading. Contributed by Lisheng Sun. 8ce5015 is described below commit 8ce5015e94bd973c9e888342117267f14059944f Author: Ayush Saxena <ayushsax...@apache.org> AuthorDate: Tue Jul 23 08:37:55 2019 +0530 HDFS-13693. Remove unnecessary search in INodeDirectory.addChild during image loading. Contributed by Lisheng Sun. (cherry picked from commit 377f95bbe8d2d171b5d7b0bfa7559e67ca4aae46) (cherry picked from commit e3f54a7babf942efbe879aabef65a5b6df57fb65) --- .../hdfs/server/namenode/FSImageFormatPBINode.java | 4 +++- .../hadoop/hdfs/server/namenode/INodeDirectory.java | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageFormatPBINode.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageFormatPBINode.java index 3193c4f..5facc40 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageFormatPBINode.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageFormatPBINode.java @@ -268,7 +268,7 @@ public final class FSImageFormatPBINode { + "name before upgrading to this release."); } // NOTE: This does not update space counts for parents - if (!parent.addChild(child)) { + if (!parent.addChildAtLoading(child)) { return; } dir.cacheName(child); @@ -550,6 +550,8 @@ public final class FSImageFormatPBINode { ++numImageErrors; } if (!inode.isReference()) { + // Serialization must ensure that children are in order, related + // to HDFS-13693 b.addChildren(inode.getId()); } else { refList.add(inode.asReference()); diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java index 8fa9bcf..e71cb0a 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java @@ -573,6 +573,22 @@ public class INodeDirectory extends INodeWithAdditionalFields } /** + * During image loading, the search is unnecessary since the insert position + * should always be at the end of the map given the sequence they are + * serialized on disk. + */ + public boolean addChildAtLoading(INode node) { + int pos; + if (!node.isReference()) { + pos = (children == null) ? (-1) : (-children.size() - 1); + addChild(node, pos); + return true; + } else { + return addChild(node); + } + } + + /** * Add the node to the children list at the given insertion point. * The basic add method which actually calls children.add(..). */ --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org