Repository: hadoop Updated Branches: refs/heads/branch-2 c9266132e -> f8d0825f3
HDFS-7761. cleanup unnecssary code logic in LocatedBlock. (yliu) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/f8d0825f Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/f8d0825f Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/f8d0825f Branch: refs/heads/branch-2 Commit: f8d0825f39f2938703e179b9b572177a6322201f Parents: c926613 Author: yliu <y...@apache.org> Authored: Thu Feb 12 03:09:38 2015 +0800 Committer: yliu <y...@apache.org> Committed: Thu Feb 12 03:09:38 2015 +0800 ---------------------------------------------------------------------- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 2 + .../hdfs/protocol/DatanodeInfoWithStorage.java | 4 ++ .../hadoop/hdfs/protocol/LocatedBlock.java | 47 ++++++-------------- .../server/blockmanagement/DatanodeManager.java | 4 +- 4 files changed, 22 insertions(+), 35 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/f8d0825f/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index 7fe580e..f57f074 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -320,6 +320,8 @@ Release 2.7.0 - UNRELEASED HDFS-7760. Document truncate for WebHDFS. (shv) + HDFS-7761. cleanup unnecssary code logic in LocatedBlock. (yliu) + OPTIMIZATIONS HDFS-7454. Reduce memory footprint for AclEntries in NameNode. http://git-wip-us.apache.org/repos/asf/hadoop/blob/f8d0825f/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/DatanodeInfoWithStorage.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/DatanodeInfoWithStorage.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/DatanodeInfoWithStorage.java index db2c2e7..54ffec65 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/DatanodeInfoWithStorage.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/DatanodeInfoWithStorage.java @@ -33,6 +33,10 @@ public class DatanodeInfoWithStorage extends DatanodeInfo { super(from); this.storageID = storageID; this.storageType = storageType; + setSoftwareVersion(from.getSoftwareVersion()); + setDependentHostNames(from.getDependentHostNames()); + setLevel(from.getLevel()); + setParent(from.getParent()); } public String getStorageID() { http://git-wip-us.apache.org/repos/asf/hadoop/blob/f8d0825f/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/LocatedBlock.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/LocatedBlock.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/LocatedBlock.java index 4ff24b9..f14c8da 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/LocatedBlock.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/LocatedBlock.java @@ -43,8 +43,6 @@ public class LocatedBlock { private final ExtendedBlock b; private long offset; // offset of the first byte of the block in the file private final DatanodeInfoWithStorage[] locs; - private final boolean hasStorageIDs; - private final boolean hasStorageTypes; /** Cached storage ID for each replica */ private String[] storageIDs; /** Cached storage type for each replica, if reported. */ @@ -104,16 +102,11 @@ public class LocatedBlock { DatanodeInfoWithStorage storage = new DatanodeInfoWithStorage(di, storageIDs != null ? storageIDs[i] : null, storageTypes != null ? storageTypes[i] : null); - storage.setDependentHostNames(di.getDependentHostNames()); - storage.setLevel(di.getLevel()); - storage.setParent(di.getParent()); this.locs[i] = storage; } } this.storageIDs = storageIDs; this.storageTypes = storageTypes; - this.hasStorageIDs = storageIDs != null; - this.hasStorageTypes = storageTypes != null; if (cachedLocs == null || cachedLocs.length == 0) { this.cachedLocs = EMPTY_LOCS; @@ -137,48 +130,36 @@ public class LocatedBlock { /** * Returns the locations associated with this block. The returned array is not * expected to be modified. If it is, caller must immediately invoke - * {@link org.apache.hadoop.hdfs.protocol.LocatedBlock#invalidateCachedStorageInfo} - * to invalidate the cached Storage ID/Type arrays. + * {@link org.apache.hadoop.hdfs.protocol.LocatedBlock#updateCachedStorageInfo} + * to update the cached Storage ID/Type arrays. */ public DatanodeInfo[] getLocations() { return locs; } public StorageType[] getStorageTypes() { - if(!hasStorageTypes) { - return null; - } - if(storageTypes != null) { - return storageTypes; - } - storageTypes = new StorageType[locs.length]; - for(int i = 0; i < locs.length; i++) { - storageTypes[i] = locs[i].getStorageType(); - } return storageTypes; } public String[] getStorageIDs() { - if(!hasStorageIDs) { - return null; - } - if(storageIDs != null) { - return storageIDs; - } - storageIDs = new String[locs.length]; - for(int i = 0; i < locs.length; i++) { - storageIDs[i] = locs[i].getStorageID(); - } return storageIDs; } /** - * Invalidates the cached StorageID and StorageType information. Must be + * Updates the cached StorageID and StorageType information. Must be * called when the locations array is modified. */ - public void invalidateCachedStorageInfo() { - storageIDs = null; - storageTypes = null; + public void updateCachedStorageInfo() { + if (storageIDs != null) { + for(int i = 0; i < locs.length; i++) { + storageIDs[i] = locs[i].getStorageID(); + } + } + if (storageTypes != null) { + for(int i = 0; i < locs.length; i++) { + storageTypes[i] = locs[i].getStorageType(); + } + } } public long getStartOffset() { http://git-wip-us.apache.org/repos/asf/hadoop/blob/f8d0825f/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeManager.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeManager.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeManager.java index d251c72..5cb110b 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeManager.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeManager.java @@ -391,8 +391,8 @@ public class DatanodeManager { } int activeLen = lastActiveIndex + 1; networktopology.sortByDistance(client, b.getLocations(), activeLen); - // must invalidate cache since we modified locations array - b.invalidateCachedStorageInfo(); + // must update cache since we modified locations array + b.updateCachedStorageInfo(); } }