diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index 541dc9900a7..417143364e0 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -1509,6 +1509,9 @@ Release 2.8.0 - UNRELEASED HDFS-9110. Use Files.walkFileTree in NNUpgradeUtil#doPreUpgrade for better efficiency. (Charlie Helin via wang) + HDFS-9221. HdfsServerConstants#ReplicaState#getState should avoid calling + values() since it creates a temporary array. (Staffan Friberg via yliu) + OPTIMIZATIONS HDFS-8026. Trace FSOutputSummer#writeChecksumChunks rather than diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/HdfsServerConstants.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/HdfsServerConstants.java index 6208a7dcece..13c9137a175 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/HdfsServerConstants.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/HdfsServerConstants.java @@ -299,6 +299,8 @@ public interface HdfsServerConstants { /** Temporary replica: created for replication and relocation only. */ TEMPORARY(4); + private static final ReplicaState[] cachedValues = ReplicaState.values(); + private final int value; ReplicaState(int v) { @@ -310,12 +312,12 @@ public interface HdfsServerConstants { } public static ReplicaState getState(int v) { - return ReplicaState.values()[v]; + return cachedValues[v]; } /** Read from in */ public static ReplicaState read(DataInput in) throws IOException { - return values()[in.readByte()]; + return cachedValues[in.readByte()]; } /** Write to out */