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 "Kihwal Lee (JIRA)" <ji...@apache.org> on 2014/10/02 18:05:34 UTC

[jira] [Comment Edited] (HDFS-7174) Support for more efficient large directories

    [ https://issues.apache.org/jira/browse/HDFS-7174?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14156643#comment-14156643 ] 

Kihwal Lee edited comment on HDFS-7174 at 10/2/14 4:04 PM:
-----------------------------------------------------------

I manually run the test-patch and verified that no new javac warnings are generated with the patch. I checked the diff of warnings.  In fact, the build log says this:
{panel}
There appear to be 1264 javac compiler warnings before the patch and 1264 javac compiler warnings after applying the patch
{panel}
I am not sure why it decided to say there are two new warnings.

The failures in TestCommitBlockSynchronization is caused by the patch. Without the patch, searching for an inode with {{null}} name in a directory always returns a valid index, 0. It doesn't even actually need to call {{parent.addChild(file)}}.

I will fix the test case.


was (Author: kihwal):
I manually run the test-patch and verified that no new javac warnings are generated with the patch. I checked the diff of warnings.  In fact, the build log says this:
{panel}
There appear to be 1264 javac compiler warnings before the patch and 1264 javac compiler warnings after applying the patch
{panel}
I am not sure why it decided to say there are two new warnings.

The failures in TestCommitBlockSynchronization is caused by the patch. Without the patch, searching for an inode with {{null}} name in a directory always returns a valid index, 0, even if there is no such entry. So, if the name of an inode is {{null}}, any {{INodeDirectory}} instances will think it has this inode as a child!  The test case was relying on this broken behavior. It doesn't even actually need to call {{parent.addChild(file)}}.

I will fix the test case.

> Support for more efficient large directories
> --------------------------------------------
>
>                 Key: HDFS-7174
>                 URL: https://issues.apache.org/jira/browse/HDFS-7174
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>            Reporter: Kihwal Lee
>            Assignee: Kihwal Lee
>            Priority: Critical
>         Attachments: HDFS-7174.patch, HDFS-7174.patch
>
>
> When the number of children under a directory grows very large, insertion becomes very costly.  E.g. creating 1M entries takes 10s of minutes.  This is because the complexity of an insertion is O\(n\). As the size of a list grows, the overhead grows n^2. (integral of linear function).  It also causes allocations and copies of big arrays.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)