[
https://issues.apache.org/jira/browse/HDFS-6755?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mit Desai updated HDFS-6755:
----------------------------
Attachment: HDFS-6755.patch
Hi [~cmccabe],
I did not mean to get rid of the sleep. I have uploaded the patch to indicate
the change I wanted to make.
I wanted to throw an IOException if the {{retries == 0}} before
{{Thread.sleep(localTimeout);}} is called.
Does that seem reasonable?
> Make DFSOutputStream more efficient
> -----------------------------------
>
> Key: HDFS-6755
> URL: https://issues.apache.org/jira/browse/HDFS-6755
> Project: Hadoop HDFS
> Issue Type: Improvement
> Affects Versions: 2.6.0
> Reporter: Mit Desai
> Assignee: Mit Desai
> Attachments: HDFS-6755.patch
>
>
> Following code in DFSOutputStream may have an unnecessary sleep.
> {code}
> try {
> Thread.sleep(localTimeout);
> if (retries == 0) {
> throw new IOException("Unable to close file because the last
> block"
> + " does not have enough number of replicas.");
> }
> retries--;
> localTimeout *= 2;
> if (Time.now() - localstart > 5000) {
> DFSClient.LOG.info("Could not complete " + src + " retrying...");
> }
> } catch (InterruptedException ie) {
> DFSClient.LOG.warn("Caught exception ", ie);
> }
> {code}
> Currently, the code sleeps before throwing an exception which should not be
> the case.
> The sleep time gets doubled on every iteration, which can make a significant
> effect if there are more than one iterations and it would sleep just to throw
> an exception. We need to move the sleep down after decrementing retries.
--
This message was sent by Atlassian JIRA
(v6.2#6252)