[ https://issues.apache.org/jira/browse/HDFS-3848?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14034258#comment-14034258 ]
Kihwal Lee commented on HDFS-3848: ---------------------------------- I kicked the precommit again. It looks like the patch is still good, but it will be nice if a test case is added. > A Bug in recoverLeaseInternal method of FSNameSystem class > ---------------------------------------------------------- > > Key: HDFS-3848 > URL: https://issues.apache.org/jira/browse/HDFS-3848 > Project: Hadoop HDFS > Issue Type: Bug > Components: namenode > Affects Versions: 0.23.1 > Reporter: Hooman Peiro Sajjad > Labels: patch > Attachments: HDFS-3848-1.patch > > Original Estimate: 1h > Remaining Estimate: 1h > > This is a bug in logic of the method recoverLeaseInternal. In line 1322 it > checks if the owner of the file is trying to recreate the file. The condition > of the if statement is > (leaseFile != null && leaseFile.equals(lease)) || > lease.getHolder().equals(holder) > As it can be seen, there are two operands (conditions) connected with an "or" > operator. The first operand is straight and will be true only if the holder > of the file is the new holder. But the problem is the second operand which > will be always true since the "lease" object is the one found by the "holder" > by calling "Lease lease = leaseManager.getLease(holder);" in line 1315. > To fix this I think the if statement only should contain the following the > condition: > (leaseFile != null && leaseFile.getHolder().equals(holder)) -- This message was sent by Atlassian JIRA (v6.2#6252)