[
https://issues.apache.org/jira/browse/HADOOP-12484?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14961415#comment-14961415
]
Chris Nauroth commented on HADOOP-12484:
----------------------------------------
[~gouravk], there is one more problem here:
{code}
} finally {
try {
lease.free();
} catch(StorageException e){
LOG.warn("Unable to free lease because: " + e.getMessage());
}
}
{code}
At this point, it's possible that {{lease}} is still {{null}} if the earlier
{{acquireLease}} call threw an exception. I recommend checking this for null
before calling {{free}}. Otherwise, it will cause a {{NullPointerException}}.
> Single File Rename Throws Incorrectly In Potential Race Condition Scenarios
> ---------------------------------------------------------------------------
>
> Key: HADOOP-12484
> URL: https://issues.apache.org/jira/browse/HADOOP-12484
> Project: Hadoop Common
> Issue Type: Bug
> Components: tools
> Reporter: Gaurav Kanade
> Assignee: Gaurav Kanade
> Attachments: HADOOP-12484.01.patch, HADOOP-12484.02.patch,
> HADOOP-12484.03.patch
>
>
> FinishSingleFileRename function - in the case where src and dst both exist
> gets a lease on src blob to block write access and then deletes the file.
> However in the time between checking existence of source file and acquiring
> lease the file may be deleted by another process (race condition). Presently
> the function simply throws in this scenario. In this case the function should
> treat this as a case where rename is complete; i.e. catch the exception and
> if this is the cause exit gracefully with the result that the rename is
> complete
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)