hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Aaron T. Myers (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HDFS-4058) DirectoryScanner may fail with IOOB if the directory scanning threads return out of volume order
Date Tue, 16 Oct 2012 00:03:03 GMT

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

Aaron T. Myers commented on HDFS-4058:
--------------------------------------

+1, the patch looks good to me.

A test would be nice, but given how simple this problem is once it's been pointed out, I don't
think it's strictly necessary in this case. To prevent this from regressing, maybe just add
a comment along the lines of:

{code}
// Use an array here instead of a dynamically-sized data structure
// so there's no issues when we insert the results in the event the
// threads return out of order. See HDFS-4058 for more info.
{code}
                
> DirectoryScanner may fail with IOOB if the directory scanning threads return out of volume
order
> ------------------------------------------------------------------------------------------------
>
>                 Key: HDFS-4058
>                 URL: https://issues.apache.org/jira/browse/HDFS-4058
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>          Components: data-node
>    Affects Versions: 2.0.0-alpha
>            Reporter: Eli Collins
>            Assignee: Eli Collins
>         Attachments: hdfs-4058.txt
>
>
> The DirectoryScanner may fail with an IOOB if the directory scanning threads return out
of volume order (ie volume scanner #3 returns before volume scanner #2). This is because it's
using an ArrayList and ArrayList#add(index, element) throws IOOB if idx >= size, and size
is only increased as elements are added, therefore adds have to be done in index order. Since
we know the size when we create the ArrayList let's just use an array (perhaps an ArrayList
was used originally because someone thought array creation called the default constructor?).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message