Author: arp Date: Wed Nov 13 02:59:46 2013 New Revision: 1541371 URL: http://svn.apache.org/r1541371 Log: HDFS-5501. Fix pendingReceivedRequests tracking in BPServiceActor.
Modified: hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/CHANGES_HDFS-2832.txt hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BPServiceActor.java Modified: hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/CHANGES_HDFS-2832.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/CHANGES_HDFS-2832.txt?rev=1541371&r1=1541370&r2=1541371&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/CHANGES_HDFS-2832.txt (original) +++ hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/CHANGES_HDFS-2832.txt Wed Nov 13 02:59:46 2013 @@ -101,3 +101,6 @@ IMPROVEMENTS: HDFS-5508. Fix compilation error after merge. (Contributed by szetszwo) + HDFS-5501. Fix pendingReceivedRequests tracking in BPServiceActor. (Arpit + Agarwal) + Modified: hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BPServiceActor.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BPServiceActor.java?rev=1541371&r1=1541370&r2=1541371&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BPServiceActor.java (original) +++ hadoop/common/branches/HDFS-2832/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BPServiceActor.java Wed Nov 13 02:59:46 2013 @@ -280,13 +280,14 @@ class BPServiceActor implements Runnable pendingIncrementalBRperStorage.entrySet()) { final String storageUuid = entry.getKey(); final PerStoragePendingIncrementalBR perStorageMap = entry.getValue(); - ReceivedDeletedBlockInfo[] receivedAndDeletedBlockArray = null; if (perStorageMap.getBlockInfoCount() > 0) { // Send newly-received and deleted blockids to namenode - receivedAndDeletedBlockArray = perStorageMap.dequeueBlockInfos(); - pendingReceivedRequests -= receivedAndDeletedBlockArray.length; - blockArrays.put(storageUuid, receivedAndDeletedBlockArray); + ReceivedDeletedBlockInfo[] rdbi = perStorageMap.dequeueBlockInfos(); + pendingReceivedRequests = + (pendingReceivedRequests > rdbi.length ? + (pendingReceivedRequests - rdbi.length) : 0); + blockArrays.put(storageUuid, rdbi); } } } @@ -312,8 +313,7 @@ class BPServiceActor implements Runnable // didn't put something newer in the meantime. PerStoragePendingIncrementalBR perStorageMap = pendingIncrementalBRperStorage.get(storageUuid); - perStorageMap.putMissingBlockInfos(rdbi); - pendingReceivedRequests += perStorageMap.getBlockInfoCount(); + pendingReceivedRequests += perStorageMap.putMissingBlockInfos(rdbi); } } } @@ -859,13 +859,17 @@ class BPServiceActor implements Runnable * Add blocks from blockArray to pendingIncrementalBR, unless the * block already exists in pendingIncrementalBR. * @param blockArray list of blocks to add. + * @return the number of missing blocks that we added. */ - void putMissingBlockInfos(ReceivedDeletedBlockInfo[] blockArray) { + int putMissingBlockInfos(ReceivedDeletedBlockInfo[] blockArray) { + int blocksPut = 0; for (ReceivedDeletedBlockInfo rdbi : blockArray) { if (!pendingIncrementalBR.containsKey(rdbi.getBlock().getBlockId())) { pendingIncrementalBR.put(rdbi.getBlock().getBlockId(), rdbi); + ++blocksPut; } } + return blocksPut; } /**