Author: wang Date: Thu Oct 24 05:40:28 2013 New Revision: 1535282 URL: http://svn.apache.org/r1535282 Log: HDFS-5405. Fix possible RetryCache hang for caching RPC handlers in FSNamesystem. (Contributed by Andrew Wang)
Modified: hadoop/common/branches/HDFS-4949/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-4949.txt hadoop/common/branches/HDFS-4949/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java Modified: hadoop/common/branches/HDFS-4949/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-4949.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4949/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-4949.txt?rev=1535282&r1=1535281&r2=1535282&view=diff ============================================================================== --- hadoop/common/branches/HDFS-4949/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-4949.txt (original) +++ hadoop/common/branches/HDFS-4949/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-4949.txt Thu Oct 24 05:40:28 2013 @@ -118,3 +118,6 @@ HDFS-4949 (Unreleased) HDFS-5404. Resolve regressions in Windows compatibility on HDFS-4949 branch. (Chris Nauroth via Andrew Wang) + HDFS-5405. Fix possible RetryCache hang for caching RPC handlers in + FSNamesystem. (wang) + Modified: hadoop/common/branches/HDFS-4949/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/HDFS-4949/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java?rev=1535282&r1=1535281&r2=1535282&view=diff ============================================================================== --- hadoop/common/branches/HDFS-4949/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java (original) +++ hadoop/common/branches/HDFS-4949/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java Thu Oct 24 05:40:28 2013 @@ -6922,16 +6922,16 @@ public class FSNamesystem implements Nam PathBasedCacheDescriptor addPathBasedCacheDirective( PathBasedCacheDirective directive) throws IOException { + checkOperation(OperationCategory.WRITE); + final FSPermissionChecker pc = isPermissionEnabled ? + getPermissionChecker() : null; CacheEntryWithPayload cacheEntry = RetryCache.waitForCompletion(retryCache, null); if (cacheEntry != null && cacheEntry.isSuccess()) { return (PathBasedCacheDescriptor) cacheEntry.getPayload(); } - final FSPermissionChecker pc = isPermissionEnabled ? - getPermissionChecker() : null; boolean success = false; PathBasedCacheDescriptor result = null; - checkOperation(OperationCategory.WRITE); writeLock(); try { checkOperation(OperationCategory.WRITE); @@ -6957,14 +6957,14 @@ public class FSNamesystem implements Nam } void removePathBasedCacheDescriptor(Long id) throws IOException { + checkOperation(OperationCategory.WRITE); + final FSPermissionChecker pc = isPermissionEnabled ? + getPermissionChecker() : null; CacheEntry cacheEntry = RetryCache.waitForCompletion(retryCache); if (cacheEntry != null && cacheEntry.isSuccess()) { return; } - final FSPermissionChecker pc = isPermissionEnabled ? - getPermissionChecker() : null; boolean success = false; - checkOperation(OperationCategory.WRITE); writeLock(); try { checkOperation(OperationCategory.WRITE); @@ -6988,10 +6988,10 @@ public class FSNamesystem implements Nam BatchedListEntries<PathBasedCacheDescriptor> listPathBasedCacheDescriptors( long startId, String pool, String path) throws IOException { + checkOperation(OperationCategory.READ); final FSPermissionChecker pc = isPermissionEnabled ? getPermissionChecker() : null; BatchedListEntries<PathBasedCacheDescriptor> results; - checkOperation(OperationCategory.READ); readLock(); boolean success = false; try { @@ -7010,13 +7010,13 @@ public class FSNamesystem implements Nam } public void addCachePool(CachePoolInfo req) throws IOException { + checkOperation(OperationCategory.WRITE); final FSPermissionChecker pc = isPermissionEnabled ? getPermissionChecker() : null; CacheEntry cacheEntry = RetryCache.waitForCompletion(retryCache); if (cacheEntry != null && cacheEntry.isSuccess()) { return; // Return previous response } - checkOperation(OperationCategory.WRITE); writeLock(); boolean success = false; try { @@ -7043,13 +7043,13 @@ public class FSNamesystem implements Nam } public void modifyCachePool(CachePoolInfo req) throws IOException { + checkOperation(OperationCategory.WRITE); final FSPermissionChecker pc = isPermissionEnabled ? getPermissionChecker() : null; CacheEntry cacheEntry = RetryCache.waitForCompletion(retryCache); if (cacheEntry != null && cacheEntry.isSuccess()) { return; // Return previous response } - checkOperation(OperationCategory.WRITE); writeLock(); boolean success = false; try { @@ -7076,13 +7076,13 @@ public class FSNamesystem implements Nam } public void removeCachePool(String cachePoolName) throws IOException { + checkOperation(OperationCategory.WRITE); final FSPermissionChecker pc = isPermissionEnabled ? getPermissionChecker() : null; CacheEntry cacheEntry = RetryCache.waitForCompletion(retryCache); if (cacheEntry != null && cacheEntry.isSuccess()) { return; // Return previous response } - checkOperation(OperationCategory.WRITE); writeLock(); boolean success = false; try {