You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-commits@hadoop.apache.org by wh...@apache.org on 2014/08/11 23:28:34 UTC
svn commit: r1617361 - in
/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs: ./
src/main/java/org/apache/hadoop/hdfs/server/namenode/
Author: wheat9
Date: Mon Aug 11 21:28:33 2014
New Revision: 1617361
URL: http://svn.apache.org/r1617361
Log:
HDFS-6838. Code cleanup for unnecessary INode replacement. Contributed by Jing Zhao.
Modified:
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INode.java
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeFile.java
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeMap.java
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeReference.java
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeSymlink.java
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1617361&r1=1617360&r2=1617361&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Mon Aug 11 21:28:33 2014
@@ -390,6 +390,9 @@ Release 2.6.0 - UNRELEASED
HDFS-6837. Code cleanup for Balancer and Dispatcher. (szetszwo via
jing9)
+ HDFS-6838. Code cleanup for unnecessary INode replacement.
+ (Jing Zhao via wheat9)
+
OPTIMIZATIONS
HDFS-6690. Deduplicate xattr names in memory. (wang)
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java?rev=1617361&r1=1617360&r2=1617361&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java Mon Aug 11 21:28:33 2014
@@ -764,8 +764,6 @@ public class FSDirectory implements Clos
checkSnapshot(srcInode, null);
}
-
-
private class RenameOperation {
private final INodesInPath srcIIP;
private final INodesInPath dstIIP;
@@ -798,7 +796,7 @@ public class FSDirectory implements Clos
// snapshot is taken on the dst tree, changes will be recorded in the latest
// snapshot of the src tree.
if (isSrcInSnapshot) {
- srcChild = srcChild.recordModification(srcIIP.getLatestSnapshotId());
+ srcChild.recordModification(srcIIP.getLatestSnapshotId());
}
// check srcChild for reference
@@ -928,8 +926,7 @@ public class FSDirectory implements Clos
updateCount(iip, 0, dsDelta, true);
}
- file = file.setFileReplication(replication, iip.getLatestSnapshotId(),
- inodeMap);
+ file.setFileReplication(replication, iip.getLatestSnapshotId());
final short newBR = file.getBlockReplication();
// check newBR < oldBR case.
@@ -1212,8 +1209,7 @@ public class FSDirectory implements Clos
// record modification
final int latestSnapshot = iip.getLatestSnapshotId();
- targetNode = targetNode.recordModification(latestSnapshot);
- iip.setLastINode(targetNode);
+ targetNode.recordModification(latestSnapshot);
// Remove the node from the namespace
long removed = removeLastINode(iip);
@@ -2122,7 +2118,7 @@ public class FSDirectory implements Clos
}
final int latest = iip.getLatestSnapshotId();
- dirNode = dirNode.recordModification(latest);
+ dirNode.recordModification(latest);
dirNode.setQuota(nsQuota, dsQuota);
return dirNode;
}
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java?rev=1617361&r1=1617360&r2=1617361&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java Mon Aug 11 21:28:33 2014
@@ -2516,7 +2516,7 @@ public class FSNamesystem implements Nam
boolean writeToEditLog,
int latestSnapshot, boolean logRetryCache)
throws IOException {
- file = file.recordModification(latestSnapshot);
+ file.recordModification(latestSnapshot);
final INodeFile cons = file.toUnderConstruction(leaseHolder, clientMachine);
leaseManager.addLease(cons.getFileUnderConstructionFeature()
@@ -4211,7 +4211,7 @@ public class FSNamesystem implements Nam
Preconditions.checkArgument(uc != null);
leaseManager.removeLease(uc.getClientName(), src);
- pendingFile = pendingFile.recordModification(latestSnapshot);
+ pendingFile.recordModification(latestSnapshot);
// The file is no longer pending.
// Create permanent INode, update blocks. No need to replace the inode here
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INode.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INode.java?rev=1617361&r1=1617360&r2=1617361&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INode.java (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INode.java Mon Aug 11 21:28:33 2014
@@ -97,9 +97,9 @@ public abstract class INode implements I
/** Set user */
final INode setUser(String user, int latestSnapshotId)
throws QuotaExceededException {
- final INode nodeToUpdate = recordModification(latestSnapshotId);
- nodeToUpdate.setUser(user);
- return nodeToUpdate;
+ recordModification(latestSnapshotId);
+ setUser(user);
+ return this;
}
/**
* @param snapshotId
@@ -122,9 +122,9 @@ public abstract class INode implements I
/** Set group */
final INode setGroup(String group, int latestSnapshotId)
throws QuotaExceededException {
- final INode nodeToUpdate = recordModification(latestSnapshotId);
- nodeToUpdate.setGroup(group);
- return nodeToUpdate;
+ recordModification(latestSnapshotId);
+ setGroup(group);
+ return this;
}
/**
@@ -148,9 +148,9 @@ public abstract class INode implements I
/** Set the {@link FsPermission} of this {@link INode} */
INode setPermission(FsPermission permission, int latestSnapshotId)
throws QuotaExceededException {
- final INode nodeToUpdate = recordModification(latestSnapshotId);
- nodeToUpdate.setPermission(permission);
- return nodeToUpdate;
+ recordModification(latestSnapshotId);
+ setPermission(permission);
+ return this;
}
abstract AclFeature getAclFeature(int snapshotId);
@@ -164,18 +164,18 @@ public abstract class INode implements I
final INode addAclFeature(AclFeature aclFeature, int latestSnapshotId)
throws QuotaExceededException {
- final INode nodeToUpdate = recordModification(latestSnapshotId);
- nodeToUpdate.addAclFeature(aclFeature);
- return nodeToUpdate;
+ recordModification(latestSnapshotId);
+ addAclFeature(aclFeature);
+ return this;
}
abstract void removeAclFeature();
final INode removeAclFeature(int latestSnapshotId)
throws QuotaExceededException {
- final INode nodeToUpdate = recordModification(latestSnapshotId);
- nodeToUpdate.removeAclFeature();
- return nodeToUpdate;
+ recordModification(latestSnapshotId);
+ removeAclFeature();
+ return this;
}
/**
@@ -199,9 +199,9 @@ public abstract class INode implements I
final INode addXAttrFeature(XAttrFeature xAttrFeature, int latestSnapshotId)
throws QuotaExceededException {
- final INode nodeToUpdate = recordModification(latestSnapshotId);
- nodeToUpdate.addXAttrFeature(xAttrFeature);
- return nodeToUpdate;
+ recordModification(latestSnapshotId);
+ addXAttrFeature(xAttrFeature);
+ return this;
}
/**
@@ -211,9 +211,9 @@ public abstract class INode implements I
final INode removeXAttrFeature(int lastestSnapshotId)
throws QuotaExceededException {
- final INode nodeToUpdate = recordModification(lastestSnapshotId);
- nodeToUpdate.removeXAttrFeature();
- return nodeToUpdate;
+ recordModification(lastestSnapshotId);
+ removeXAttrFeature();
+ return this;
}
/**
@@ -298,11 +298,8 @@ public abstract class INode implements I
* @param latestSnapshotId The id of the latest snapshot that has been taken.
* Note that it is {@link Snapshot#CURRENT_STATE_ID}
* if no snapshots have been taken.
- * @return The current inode, which usually is the same object of this inode.
- * However, in some cases, this inode may be replaced with a new inode
- * for maintaining snapshots. The current inode is then the new inode.
*/
- abstract INode recordModification(final int latestSnapshotId)
+ abstract void recordModification(final int latestSnapshotId)
throws QuotaExceededException;
/** Check whether it's a reference. */
@@ -652,9 +649,9 @@ public abstract class INode implements I
/** Set the last modification time of inode. */
public final INode setModificationTime(long modificationTime,
int latestSnapshotId) throws QuotaExceededException {
- final INode nodeToUpdate = recordModification(latestSnapshotId);
- nodeToUpdate.setModificationTime(modificationTime);
- return nodeToUpdate;
+ recordModification(latestSnapshotId);
+ setModificationTime(modificationTime);
+ return this;
}
/**
@@ -682,9 +679,9 @@ public abstract class INode implements I
*/
public final INode setAccessTime(long accessTime, int latestSnapshotId)
throws QuotaExceededException {
- final INode nodeToUpdate = recordModification(latestSnapshotId);
- nodeToUpdate.setAccessTime(accessTime);
- return nodeToUpdate;
+ recordModification(latestSnapshotId);
+ setAccessTime(accessTime);
+ return this;
}
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java?rev=1617361&r1=1617360&r2=1617361&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java Mon Aug 11 21:28:33 2014
@@ -318,7 +318,7 @@ public class INodeDirectory extends INod
}
@Override
- public INodeDirectory recordModification(int latestSnapshotId)
+ public void recordModification(int latestSnapshotId)
throws QuotaExceededException {
if (isInLatestSnapshot(latestSnapshotId)
&& !shouldRecordInSrcSnapshot(latestSnapshotId)) {
@@ -330,7 +330,6 @@ public class INodeDirectory extends INod
// record self in the diff list if necessary
sf.getDiffs().saveSelf2Snapshot(latestSnapshotId, this, null);
}
- return this;
}
/**
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeFile.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeFile.java?rev=1617361&r1=1617360&r2=1617361&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeFile.java (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeFile.java Mon Aug 11 21:28:33 2014
@@ -284,7 +284,7 @@ public class INodeFile extends INodeWith
}
@Override
- public INodeFile recordModification(final int latestSnapshotId)
+ public void recordModification(final int latestSnapshotId)
throws QuotaExceededException {
if (isInLatestSnapshot(latestSnapshotId)
&& !shouldRecordInSrcSnapshot(latestSnapshotId)) {
@@ -296,7 +296,6 @@ public class INodeFile extends INodeWith
// record self in the diff list if necessary
sf.getDiffs().saveSelf2Snapshot(latestSnapshotId, this, null);
}
- return this;
}
public FileDiffList getDiffs() {
@@ -344,11 +343,10 @@ public class INodeFile extends INodeWith
/** Set the replication factor of this file. */
public final INodeFile setFileReplication(short replication,
- int latestSnapshotId, final INodeMap inodeMap)
- throws QuotaExceededException {
- final INodeFile nodeToUpdate = recordModification(latestSnapshotId);
- nodeToUpdate.setFileReplication(replication);
- return nodeToUpdate;
+ int latestSnapshotId) throws QuotaExceededException {
+ recordModification(latestSnapshotId);
+ setFileReplication(replication);
+ return this;
}
/** @return preferred block size (in bytes) of the file. */
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeMap.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeMap.java?rev=1617361&r1=1617360&r2=1617361&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeMap.java (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeMap.java Mon Aug 11 21:28:33 2014
@@ -93,9 +93,8 @@ public class INodeMap {
"", "", new FsPermission((short) 0)), 0, 0) {
@Override
- INode recordModification(int latestSnapshotId)
+ void recordModification(int latestSnapshotId)
throws QuotaExceededException {
- return null;
}
@Override
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeReference.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeReference.java?rev=1617361&r1=1617360&r2=1617361&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeReference.java (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeReference.java Mon Aug 11 21:28:33 2014
@@ -287,11 +287,9 @@ public abstract class INodeReference ext
}
@Override
- final INode recordModification(int latestSnapshotId)
+ final void recordModification(int latestSnapshotId)
throws QuotaExceededException {
referred.recordModification(latestSnapshotId);
- // reference is never replaced
- return this;
}
@Override // used by WithCount
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeSymlink.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeSymlink.java?rev=1617361&r1=1617360&r2=1617361&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeSymlink.java (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeSymlink.java Mon Aug 11 21:28:33 2014
@@ -47,12 +47,11 @@ public class INodeSymlink extends INodeW
}
@Override
- INode recordModification(int latestSnapshotId) throws QuotaExceededException {
+ void recordModification(int latestSnapshotId) throws QuotaExceededException {
if (isInLatestSnapshot(latestSnapshotId)) {
INodeDirectory parent = getParent();
parent.saveChild2Snapshot(this, latestSnapshotId, new INodeSymlink(this));
}
- return this;
}
/** @return true unconditionally. */