[
https://issues.apache.org/jira/browse/HDFS-5781?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13878211#comment-13878211
]
Colin Patrick McCabe commented on HDFS-5781:
--------------------------------------------
{code}
+ private static final FSEditLogOpCodes[] VALUES = new FSEditLogOpCodes[256];
+
+ static {
+ for (FSEditLogOpCodes code : FSEditLogOpCodes.values()) {
+ int codeValue = code.getOpCode() & 0xff;
+ VALUES[codeValue] = code;
+ }
+ }
{code}
Sorry to nitpick, but it might be better to do a first pass through values() to
determine how big the array should be. That way we wouldn't have to use 256
all the time.
+1 once this is addressed.
> Use a map to record the mapping between FSEditLogOpCode and the corresponding
> byte value
> ----------------------------------------------------------------------------------------
>
> Key: HDFS-5781
> URL: https://issues.apache.org/jira/browse/HDFS-5781
> Project: Hadoop HDFS
> Issue Type: Improvement
> Components: namenode
> Affects Versions: 2.4.0
> Reporter: Jing Zhao
> Assignee: Jing Zhao
> Attachments: HDFS-5781.000.patch, HDFS-5781.001.patch
>
>
> HDFS-5674 uses Enum.values and enum.ordinal to identify an editlog op for a
> given byte value. While improving the efficiency, it may cause issue. E.g.,
> when several new editlog ops are added to trunk around the same time (for
> several different new features), it is hard to backport the editlog ops with
> larger byte values to branch-2 before those with smaller values, since there
> will be gaps in the byte values of the enum.
> This jira plans to still use a map to record the mapping between editlog ops
> and their byte values.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)