You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-issues@hadoop.apache.org by "Chris Nauroth (JIRA)" <ji...@apache.org> on 2013/03/16 00:28:12 UTC

[jira] [Updated] (MAPREDUCE-5075) DistCp leaks input file handles

     [ https://issues.apache.org/jira/browse/MAPREDUCE-5075?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Chris Nauroth updated MAPREDUCE-5075:
-------------------------------------

    Attachment: MAPREDUCE-5075.1.patch

Here is a patch with the following changes:

# {{RetriableFileCopyCommand}} - This is just code clean-up.  The {{copyBytes}} private method accepted a flag as an argument to control whether or not to close the streams after copying.  This method was only ever called from {{copyToTmpFile}} with a hard-coded true.  I removed the flag from the method signature and changed the code so that it closes the streams unconditionally.
# {{ThrottledInputStream}} - Override {{close}} so that it closes the wrapped stream.
# {{TestIntegration}} - This code was not creating the target file correctly.  {{target}} contains a fully qualified path.  Inside {{createFiles}}, it prepends the test root again.  This would be 2 fully qualified paths appended to each other.  On Windows, the result would look like C:\project\target\C:\project\target.  The second ':' makes the filename invalid.

With this patch, all DistCp tests pass consistently on Mac and Windows.

                
> DistCp leaks input file handles
> -------------------------------
>
>                 Key: MAPREDUCE-5075
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-5075
>             Project: Hadoop Map/Reduce
>          Issue Type: Bug
>          Components: distcp
>    Affects Versions: 3.0.0
>            Reporter: Chris Nauroth
>            Assignee: Chris Nauroth
>         Attachments: MAPREDUCE-5075.1.patch
>
>
> DistCp wraps the {{InputStream}} for each input file it reads in an instance of {{ThrottledInputStream}}.  This class does not close the wrapped {{InputStream}}.  {{RetriableFileCopyCommand}} guarantees that the {{ThrottledInputStream}} gets closed, but without closing the underlying wrapped stream, it still leaks a file handle.

--
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