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