Author: szetszwo
Date: Thu May 3 23:34:35 2012
New Revision: 1333680
URL: http://svn.apache.org/viewvc?rev=1333680&view=rev
Log:
svn merge -c 1333679 from trunk for HDFS-3350. In INode, add final to
compareTo(..), equals(..) and hashCode(), and remove synchronized from
updatePermissionStatus(..).
Modified:
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/ (props
changed)
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/
(props changed)
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INode.java
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java
Propchange: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/
------------------------------------------------------------------------------
Merged /hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs:r1333679
Modified:
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1333680&r1=1333679&r2=1333680&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
(original)
+++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
Thu May 3 23:34:35 2012
@@ -473,6 +473,9 @@ Release 2.0.0 - UNRELEASED
HDFS-3359. DFSClient.close should close cached sockets. (todd)
+ HDFS-3350. In INode, add final to compareTo(..), equals(..) and hashCode(),
+ and remove synchronized from updatePermissionStatus(..). (szetszwo)
+
BREAKDOWN OF HDFS-1623 SUBTASKS
HDFS-2179. Add fencing framework and mechanisms for NameNode HA. (todd)
Propchange:
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/
------------------------------------------------------------------------------
Merged
/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java:r1333679
Modified:
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INode.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INode.java?rev=1333680&r1=1333679&r2=1333680&view=diff
==============================================================================
---
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INode.java
(original)
+++
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INode.java
Thu May 3 23:34:35 2012
@@ -30,6 +30,8 @@ import org.apache.hadoop.hdfs.protocol.B
import org.apache.hadoop.hdfs.server.blockmanagement.BlockInfo;
import org.apache.hadoop.util.StringUtils;
+import com.google.common.primitives.SignedBytes;
+
/**
* We keep an in-memory representation of the file/block hierarchy.
* This is a base INode class containing common fields for file and
@@ -143,8 +145,7 @@ abstract class INode implements Comparab
protected PermissionStatus getPermissionStatus() {
return new
PermissionStatus(getUserName(),getGroupName(),getFsPermission());
}
- private synchronized void updatePermissionStatus(
- PermissionStatusFormat f, long n) {
+ private void updatePermissionStatus(PermissionStatusFormat f, long n) {
permission = f.combine(n, permission);
}
/** Get user name */
@@ -400,48 +401,30 @@ abstract class INode implements Comparab
}
}
- //
- // Comparable interface
- //
- public int compareTo(byte[] o) {
- return compareBytes(name, o);
+ private static final byte[] EMPTY_BYTES = {};
+
+ @Override
+ public final int compareTo(byte[] bytes) {
+ final byte[] left = name == null? EMPTY_BYTES: name;
+ final byte[] right = bytes == null? EMPTY_BYTES: bytes;
+ return SignedBytes.lexicographicalComparator().compare(left, right);
}
- public boolean equals(Object o) {
- if (!(o instanceof INode)) {
+ @Override
+ public final boolean equals(Object that) {
+ if (this == that) {
+ return true;
+ }
+ if (that == null || !(that instanceof INode)) {
return false;
}
- return Arrays.equals(this.name, ((INode)o).name);
+ return Arrays.equals(this.name, ((INode)that).name);
}
- public int hashCode() {
+ @Override
+ public final int hashCode() {
return Arrays.hashCode(this.name);
}
-
- //
- // static methods
- //
- /**
- * Compare two byte arrays.
- *
- * @return a negative integer, zero, or a positive integer
- * as defined by {@link #compareTo(byte[])}.
- */
- static int compareBytes(byte[] a1, byte[] a2) {
- if (a1==a2)
- return 0;
- int len1 = (a1==null ? 0 : a1.length);
- int len2 = (a2==null ? 0 : a2.length);
- int n = Math.min(len1, len2);
- byte b1, b2;
- for (int i=0; i<n; i++) {
- b1 = a1[i];
- b2 = a2[i];
- if (b1 != b2)
- return b1 - b2;
- }
- return len1 - len2;
- }
/**
* Create an INode; the inode's name is not set yet
Modified:
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java?rev=1333680&r1=1333679&r2=1333680&view=diff
==============================================================================
---
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java
(original)
+++
hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java
Thu May 3 23:34:35 2012
@@ -173,9 +173,9 @@ class INodeDirectory extends INode {
*/
int getExistingPathINodes(byte[][] components, INode[] existing,
boolean resolveLink) throws UnresolvedLinkException {
- assert compareBytes(this.name, components[0]) == 0 :
- "Incorrect name " + getLocalName() + " expected " +
- DFSUtil.bytes2String(components[0]);
+ assert this.compareTo(components[0]) == 0 :
+ "Incorrect name " + getLocalName() + " expected "
+ + (components[0] == null? null: DFSUtil.bytes2String(components[0]));
INode curNode = this;
int count = 0;
@@ -317,8 +317,7 @@ class INodeDirectory extends INode {
INode newNode,
INodeDirectory parent,
boolean propagateModTime
- ) throws FileNotFoundException,
- UnresolvedLinkException {
+ ) throws FileNotFoundException {
// insert into the parent children list
newNode.name = localname;
if(parent.addChild(newNode, propagateModTime) == null)