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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]