Author: umamahesh Date: Mon Nov 18 13:56:39 2013 New Revision: 1543029 URL: http://svn.apache.org/r1543029 Log: HDFS-5372. In FSNamesystem, hasReadLock() returns false if the current thread holds the write lock (Contributed by Vinay)
Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/util/RwLock.java Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1543029&r1=1543028&r2=1543029&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Mon Nov 18 13:56:39 2013 @@ -288,6 +288,9 @@ Release 2.2.1 - UNRELEASED HDFS-5519. COMMIT handler should update the commit status after sync (brandonli) + HDFS-5372. In FSNamesystem, hasReadLock() returns false if the current + thread holds the write lock (Vinaykumar B via umamahesh) + Release 2.2.0 - 2013-10-13 INCOMPATIBLE CHANGES Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java?rev=1543029&r1=1543028&r2=1543029&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java Mon Nov 18 13:56:39 2013 @@ -817,7 +817,7 @@ public class BlockManager { final boolean isFileUnderConstruction, final long offset, final long length, final boolean needBlockToken, final boolean inSnapshot) throws IOException { - assert namesystem.hasReadOrWriteLock(); + assert namesystem.hasReadLock(); if (blocks == null) { return null; } else if (blocks.length == 0) { Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java?rev=1543029&r1=1543028&r2=1543029&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java Mon Nov 18 13:56:39 2013 @@ -1265,11 +1265,7 @@ public class FSNamesystem implements Nam } @Override public boolean hasReadLock() { - return this.fsLock.getReadHoldCount() > 0; - } - @Override - public boolean hasReadOrWriteLock() { - return hasReadLock() || hasWriteLock(); + return this.fsLock.getReadHoldCount() > 0 || hasWriteLock(); } public int getReadHoldCount() { @@ -2006,7 +2002,7 @@ public class FSNamesystem implements Nam */ private void verifyParentDir(String src) throws FileNotFoundException, ParentNotDirectoryException, UnresolvedLinkException { - assert hasReadOrWriteLock(); + assert hasReadLock(); Path parent = new Path(src).getParent(); if (parent != null) { final INode parentNode = dir.getINode(parent.toString()); @@ -2613,7 +2609,7 @@ public class FSNamesystem implements Nam ExtendedBlock previous, LocatedBlock[] onRetryBlock) throws IOException { - assert hasReadOrWriteLock(); + assert hasReadLock(); checkBlock(previous); onRetryBlock[0] = null; @@ -2810,7 +2806,7 @@ public class FSNamesystem implements Nam private INodeFileUnderConstruction checkLease(String src, long fileId, String holder, INode inode) throws LeaseExpiredException, FileNotFoundException { - assert hasReadOrWriteLock(); + assert hasReadLock(); if (inode == null || !inode.isFile()) { Lease lease = leaseManager.getLease(holder); throw new LeaseExpiredException( @@ -3769,7 +3765,7 @@ public class FSNamesystem implements Nam @Override public boolean isInSnapshot(BlockInfoUnderConstruction blockUC) { - assert hasReadOrWriteLock(); + assert hasReadLock(); final BlockCollection bc = blockUC.getBlockCollection(); if (bc == null || !(bc instanceof INodeFileUnderConstruction)) { return false; Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/util/RwLock.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/util/RwLock.java?rev=1543029&r1=1543028&r2=1543029&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/util/RwLock.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/util/RwLock.java Mon Nov 18 13:56:39 2013 @@ -39,7 +39,4 @@ public interface RwLock { /** Check if the current thread holds write lock. */ public boolean hasWriteLock(); - - /** Check if the current thread holds read or write lock. */ - public boolean hasReadOrWriteLock(); }