[
https://issues.apache.org/jira/browse/HDFS-3388?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13270955#comment-13270955
]
Tsz Wo (Nicholas), SZE commented on HDFS-3388:
----------------------------------------------
The correct way to fix the bug is not to close output stream when an error is
sent. Below is a suggestion.
{code}
@@ -140,8 +141,12 @@
DataTransferThrottler throttler =
GetImageServlet.getThrottler(conf);
// send edits
- TransferFsImage.getFileServer(response.getOutputStream(),
- editFile, throttler);
+ OutputStream out = response.getOutputStream();
+ try {
+ TransferFsImage.getFileServer(out, editFile, throttler);
+ } finally {
+ out.close();
+ }
} else {
response
.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED,
@@ -155,8 +160,6 @@
String errMsg = "getedit failed. " + StringUtils.stringifyException(ie);
response.sendError(HttpServletResponse.SC_GONE, errMsg);
throw new IOException(errMsg);
- } finally {
- response.getOutputStream().close();
}
}
{code}
> GetJournalEditServlet should catch more exceptions, not just IOException
> ------------------------------------------------------------------------
>
> Key: HDFS-3388
> URL: https://issues.apache.org/jira/browse/HDFS-3388
> Project: Hadoop HDFS
> Issue Type: Sub-task
> Components: ha, name-node
> Reporter: Brandon Li
> Assignee: Brandon Li
> Attachments: HDFS-3388.HDFS-3092.patch
>
>
> GetJournalEditServlet has the same problem as that of GetImageServlet
> (HDFS-3330). It should be fixed in the same way. Also need to make
> CheckpointFaultInjector visible for journal service tests.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira