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

Tsz Wo Nicholas Sze resolved HDFS-9194.
---------------------------------------
    Resolution: Duplicate

> AlreadyBeingCreatedException ... because pendingCreates is non-null but no 
> leases found.
> ----------------------------------------------------------------------------------------
>
>                 Key: HDFS-9194
>                 URL: https://issues.apache.org/jira/browse/HDFS-9194
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: namenode
>            Reporter: Tsz Wo Nicholas Sze
>            Assignee: Tsz Wo Nicholas Sze
>
> There is a possible bug in FSDirectory.addFile causing no leases found for 
> under construction files.
> {code}
> //FSDirectory
>   INodeFile addFile(String path, PermissionStatus permissions,
>                     short replication, long preferredBlockSize,
>                     String clientName, String clientMachine)
>     throws FileAlreadyExistsException, QuotaExceededException,
>       UnresolvedLinkException, SnapshotAccessControlException, AclException {
>     long modTime = now();
>     INodeFile newNode = newINodeFile(namesystem.allocateNewInodeId(),
>         permissions, modTime, modTime, replication, preferredBlockSize);
>     newNode.toUnderConstruction(clientName, clientMachine);
>     boolean added = false;
>     writeLock();
>     try {
>       added = addINode(path, newNode);
>     } finally {
>       writeUnlock();
>     }
>     ...
>   }
> {code}
> - newNode.toUnderConstruction(clientName, clientMachine) adds 
> FileUnderConstructionFeature to the INode, i.e. the file becomes an under 
> construction file.  At this moment, there is no lease for this file yet.  The 
> lease will be added later in FSNamesystem.startFileInternal(..).
> - It is possible that addINode(path, newNode) adds the inode to the namespace 
> tree but throws QuotaExceededException later on when calling 
> updateModificationTime.  (i.e. addINode -> addLastINode -> addChild -> 
> parent.addChild -> updateModificationTime throws QuotaExceededException) 
> Then, the newly added uc file is left in namespace but the corresponding 
> lease won't be added.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to