[ 
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)

Reply via email to