hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Konstantin Shvachko (JIRA)" <j...@apache.org>
Subject [jira] Updated: (HDFS-495) Hadoop FSNamesystem startFileInternal() getLease() has bug
Date Fri, 06 Aug 2010 21:39:17 GMT

     [ https://issues.apache.org/jira/browse/HDFS-495?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Konstantin Shvachko updated HDFS-495:
-------------------------------------

    Attachment: HDFS-495.patch

Fixing the problem for y20, since everything else is already fixed.

> Hadoop FSNamesystem startFileInternal() getLease() has bug
> ----------------------------------------------------------
>
>                 Key: HDFS-495
>                 URL: https://issues.apache.org/jira/browse/HDFS-495
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: name-node
>    Affects Versions: 0.20.1
>            Reporter: Ruyue Ma
>            Priority: Minor
>             Fix For: 0.20.2
>
>         Attachments: HDFS-495.patch
>
>
> Original Code:
>         //
>         // If the file is under construction , then it must be in our
>         // leases. Find the appropriate lease record.
>         //
>         Lease lease = leaseManager.getLease(new StringBytesWritable(holder));
>         //
>         // We found the lease for this file. And surprisingly the original
>         // holder is trying to recreate this file. This should never occur.
>         //
>         if (lease != null) {
>           throw new AlreadyBeingCreatedException(
>                                                  "failed to create file " + src + " for
" + holder +
>                                                  " on client " + clientMachine + 
>                                                  " because current leaseholder is trying
to recreate file.");
>         }
> Problem: if another client (who has had some file leases) to recreate the underconstruction
file, it can't trigger the lease recovery. 
> Reason:  we should do:
>  if (new StringBytesWritable(holder).equals(pendingFile.clientName)){
>           throw new AlreadyBeingCreatedException(
>                                                  "failed to create file " + src + " for
" + holder +
>                                                  " on client " + clientMachine + 
>                                                  " because current leaseholder is trying
to recreate file.");
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message