HDFS-12171. Reduce IIP object allocations for inode lookup. Contributed by Daryn Sharp.
This commit is contained in:
parent
6d983cca52
commit
a68b5b31cf
@ -209,9 +209,8 @@ private EncryptionZoneInt getEncryptionZoneForPath(INodesInPath iip) {
|
||||
if (!hasCreatedEncryptionZone()) {
|
||||
return null;
|
||||
}
|
||||
List<INode> inodes = iip.getReadOnlyINodes();
|
||||
for (int i = inodes.size() - 1; i >= 0; i--) {
|
||||
final INode inode = inodes.get(i);
|
||||
for (int i = iip.length() - 1; i >= 0; i--) {
|
||||
final INode inode = iip.getINode(i);
|
||||
if (inode != null) {
|
||||
final EncryptionZoneInt ezi = encryptionZones.get(inode.getId());
|
||||
if (ezi != null) {
|
||||
|
@ -355,9 +355,8 @@ private static ErasureCodingPolicy getErasureCodingPolicyForPath(
|
||||
Preconditions.checkNotNull(iip, "INodes cannot be null");
|
||||
fsd.readLock();
|
||||
try {
|
||||
List<INode> inodes = iip.getReadOnlyINodes();
|
||||
for (int i = inodes.size() - 1; i >= 0; i--) {
|
||||
final INode inode = inodes.get(i);
|
||||
for (int i = iip.length() - 1; i >= 0; i--) {
|
||||
final INode inode = iip.getINode(i);
|
||||
if (inode == null) {
|
||||
continue;
|
||||
}
|
||||
|
@ -18,9 +18,6 @@
|
||||
package org.apache.hadoop.hdfs.server.namenode;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.NoSuchElementException;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
@ -336,15 +333,7 @@ public int getPathSnapshotId() {
|
||||
* otherwise, i < 0, return the (length + i)-th inode.
|
||||
*/
|
||||
public INode getINode(int i) {
|
||||
if (inodes == null || inodes.length == 0) {
|
||||
throw new NoSuchElementException("inodes is null or empty");
|
||||
}
|
||||
int index = i >= 0 ? i : inodes.length + i;
|
||||
if (index < inodes.length && index >= 0) {
|
||||
return inodes[index];
|
||||
} else {
|
||||
throw new NoSuchElementException("inodes.length == " + inodes.length);
|
||||
}
|
||||
return inodes[(i < 0) ? inodes.length + i : i];
|
||||
}
|
||||
|
||||
/** @return the last inode. */
|
||||
@ -384,10 +373,6 @@ public int length() {
|
||||
return inodes.length;
|
||||
}
|
||||
|
||||
public List<INode> getReadOnlyINodes() {
|
||||
return Collections.unmodifiableList(Arrays.asList(inodes));
|
||||
}
|
||||
|
||||
public INode[] getINodesArray() {
|
||||
INode[] retArr = new INode[inodes.length];
|
||||
System.arraycopy(inodes, 0, retArr, 0, inodes.length);
|
||||
|
@ -310,9 +310,8 @@ public void testSnapshotPathINodesAfterDeletion() throws Exception {
|
||||
}
|
||||
|
||||
private int getNumNonNull(INodesInPath iip) {
|
||||
List<INode> inodes = iip.getReadOnlyINodes();
|
||||
for (int i = inodes.size() - 1; i >= 0; i--) {
|
||||
if (inodes.get(i) != null) {
|
||||
for (int i = iip.length() - 1; i >= 0; i--) {
|
||||
if (iip.getINode(i) != null) {
|
||||
return i+1;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user