You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-issues@hadoop.apache.org by "Yiqun Lin (JIRA)" <ji...@apache.org> on 2019/01/31 09:32:00 UTC
[jira] [Commented] (HDFS-14172) Avoid NPE when
SectionName#fromString() returns null
[ https://issues.apache.org/jira/browse/HDFS-14172?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16757056#comment-16757056 ]
Yiqun Lin commented on HDFS-14172:
----------------------------------
{quote}Regarding the behavior against an unknown section, I would prefer logging a warn/error to throwing a descriptive IOException and aborting the program.
{quote}
Re-looking into this, as HDFS-7076 is not merged, I think a descriptive IOException and aborting the program will be a more appropriate way. I mean that, it's safe for NN that it loads an unknown section and it should aborts the program.
So a descriptive IOException throwing should be enough, can we revert additional change and make this JIRA more clear, [~water]?
{code:java}
SectionName sectionName = SectionName.fromString(n);
if (sectionName == null) {
throw new IOException("Unrecognized section {}" + n);
}
switch (sectionName) {
case NS_INFO:
loadNameSystemSection(in);
break;
...
{code}
> Avoid NPE when SectionName#fromString() returns null
> ----------------------------------------------------
>
> Key: HDFS-14172
> URL: https://issues.apache.org/jira/browse/HDFS-14172
> Project: Hadoop HDFS
> Issue Type: Improvement
> Reporter: Xiang Li
> Assignee: Xiang Li
> Priority: Minor
> Attachments: HADOOP-14172.000.patch, HADOOP-14172.001.patch, HADOOP-14172.002.patch
>
>
> In FSImageFormatProtobuf.SectionName#fromString(), as follows:
> {code:java}
> public static SectionName fromString(String name) {
> for (SectionName n : values) {
> if (n.name.equals(name))
> return n;
> }
> return null;
> }
> {code}
> When the code meets an unknown section from the fsimage, the function will return null. Callers always operates the return value with a "switch" clause, like FSImageFormatProtobuf.Loader#loadInternal(), as:
> {code:java}
> switch (SectionName.fromString(n))
> {code}
> NPE will be thrown here.
> For self-protection, shall we add a default section name in the enum of SectionName, like "UNKNOWN", to steer clear of NPE?
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscribe@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-help@hadoop.apache.org