You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yarn-issues@hadoop.apache.org by "Tsuyoshi OZAWA (JIRA)" <ji...@apache.org> on 2014/08/30 19:42:53 UTC
[jira] [Updated] (YARN-2484)
FileSystemRMStateStore#readFile/writeFile should close
FSData(In|Out)putStream in final block
[ https://issues.apache.org/jira/browse/YARN-2484?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tsuyoshi OZAWA updated YARN-2484:
---------------------------------
Attachment: YARN-2484.1.patch
In this case, we should use close() methods directory instead of IOUtils, because exceptions in close methods should not be ignored.
> FileSystemRMStateStore#readFile/writeFile should close FSData(In|Out)putStream in final block
> ---------------------------------------------------------------------------------------------
>
> Key: YARN-2484
> URL: https://issues.apache.org/jira/browse/YARN-2484
> Project: Hadoop YARN
> Issue Type: Bug
> Reporter: Tsuyoshi OZAWA
> Assignee: Tsuyoshi OZAWA
> Priority: Trivial
> Attachments: YARN-2484.1.patch
>
>
> File descriptors can leak if exceptions are thrown in these methods.
> {code}
> private byte[] readFile(Path inputPath, long len) throws Exception {
> FSDataInputStream fsIn = fs.open(inputPath);
> // state data will not be that "long"
> byte[] data = new byte[(int)len];
> fsIn.readFully(data);
> fsIn.close();
> return data;
> }
> {code}
> {code}
> private void writeFile(Path outputPath, byte[] data) throws Exception {
> Path tempPath =
> new Path(outputPath.getParent(), outputPath.getName() + ".tmp");
> FSDataOutputStream fsOut = null;
> // This file will be overwritten when app/attempt finishes for saving the
> // final status.
> fsOut = fs.create(tempPath, true);
> fsOut.write(data);
> fsOut.close();
> fs.rename(tempPath, outputPath);
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.2#6252)