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 "Xiaoyu Yao (JIRA)" <ji...@apache.org> on 2016/05/11 21:19:12 UTC

[jira] [Commented] (HDFS-10383) Safely close resources in DFSTestUtil

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

Xiaoyu Yao commented on HDFS-10383:
-----------------------------------

Thanks [~liuml07] for working on this. The patch looks good to me overall. Just few comments:

1. There are a few places where the FSDataOutputStream can be wrapped with try-with-resource, e.g.,
runOperations/writeFile/appendFile/createStripedFile

2. getAllBlocks(FileSystem fs, Path path) can be wrapped with try-with-resource.

> Safely close resources in DFSTestUtil
> -------------------------------------
>
>                 Key: HDFS-10383
>                 URL: https://issues.apache.org/jira/browse/HDFS-10383
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: test
>            Reporter: Mingliang Liu
>            Assignee: Mingliang Liu
>            Priority: Minor
>         Attachments: HDFS-10383.000.patch
>
>
> There are a few of methods in {{DFSTestUtil}} that do not close the resource safely, or elegantly. We can use the try-with-resource statement to address this problem.
> Specially, as {{DFSTestUtil}} is popularly used in test, we need to preserve any exceptions thrown during the processing of the resource while still guaranteeing it's closed finally. Take for example,the current implementation of {{DFSTestUtil#createFile()}} closes the FSDataOutputStream in the {{finally}} block, and when closing if the internal {{DFSOutputStream#close()}} throws any exception, which it often does, the exception thrown during the processing will be lost. See this [test failure|https://builds.apache.org/job/PreCommit-HADOOP-Build/9320/testReport/org.apache.hadoop.hdfs/TestAsyncDFSRename/testAggressiveConcurrentAsyncRenameWithOverwrite/], and we have to guess what was the root cause.
> Using try-with-resource, we can close the resources safely, and the exceptions thrown both in processing and closing will be available (closing exception will be suppressed).



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

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscribe@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-help@hadoop.apache.org