hadoop-hdfs-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tsz Wo Nicholas Sze (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (HDFS-9194) AlreadyBeingCreatedException ... because pendingCreates is non-null but no leases found.
Date Mon, 05 Oct 2015 12:11:26 GMT

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

Mime
View raw message