hadoop-common-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tsz Wo (Nicholas), SZE (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HADOOP-5700) INode.getPathComponents throws NPE when given a non-absolute path
Date Fri, 29 May 2009 17:48:45 GMT

    [ https://issues.apache.org/jira/browse/HADOOP-5700?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12714531#action_12714531

Tsz Wo (Nicholas), SZE commented on HADOOP-5700:

I'll prepare a patch to address the above things.

On a side note, what is the policy for dealing with updated patches after a JIRA has already
been committed? As far as I knew, discussion of a better/new patch is supposed to go on in
a new JIRA.

Thanks, Todd.  I think the right way is to revert the committed patch and work on a new patch
in this issue.

bq. I strongly disagree on the performance issue. I'd go into detail about why this cannot
possibly cause a performance problem, but clearly this is an idealogical debate rather than
a practical one for this case.

For practical reasons, we need numbers.  Without measurement, this becomes a debate.  getPathComponents(..)
is one of the central internal methods in Namenode.  All accesses to the namespace use it.
 Many of the accesses acquire the namespace lock beforehand.  Please try measuring the time
required for lsr on a directory with 10 millions descendants before and after the patch.

bq. ... a constant-time single-byte comparison.

When we check the code of String.startWith(String), it is not a single-byte comparison.  If
the patch uses the return-value of getPathNames(..), I won't have problems on it.

bq. I think of IAEs as stricly more informative than NPEs for the developer who has committed
the error.

I agree that IAEs is more informative than NPEs for the developers but it is never worth to
benifit developers by sacrificing the performance of production systems.

> INode.getPathComponents throws NPE when given a non-absolute path
> -----------------------------------------------------------------
>                 Key: HADOOP-5700
>                 URL: https://issues.apache.org/jira/browse/HADOOP-5700
>             Project: Hadoop Core
>          Issue Type: Bug
>          Components: dfs
>            Reporter: Todd Lipcon
>            Assignee: Todd Lipcon
>            Priority: Minor
>             Fix For: 0.21.0
>         Attachments: HADOOP-5700.txt
> If you pass a path that doesn't start with '/' to INode.getPathComponents, it throws
a NullPointerException. Instead it should throw IllegalArgumentException to make it clear
that absolute paths are required in this code.
> The attached patch fixes this, clarifies, the javadoc, and adds a test case.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message