This is an automated email from the ASF dual-hosted git repository. ayushsaxena pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/trunk by this push: new 377f95b HDFS-13693. Remove unnecessary search in INodeDirectory.addChild during image loading. Contributed by Lisheng Sun. 377f95b is described below commit 377f95bbe8d2d171b5d7b0bfa7559e67ca4aae46 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. --- .../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 bc455e0..6825a5c 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 @@ -269,7 +269,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); @@ -551,6 +551,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 433abcb..28eb3d2 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