HDFS-7217. Better batching of IBRs. Contributed by Kihwal Lee.

(cherry picked from commit db71bb54bc)
This commit is contained in:
Kihwal Lee 2014-10-09 12:11:42 -05:00
parent f86c9c6c71
commit 0280e9aee0
4 changed files with 12 additions and 6 deletions

View File

@ -278,6 +278,8 @@ Release 2.6.0 - UNRELEASED
HDFS-6894. Add XDR parser method for each NFS response. HDFS-6894. Add XDR parser method for each NFS response.
(Brandon Li via wheat9) (Brandon Li via wheat9)
HDFS-7217. Better batching of IBRs. (kihwal)
OPTIMIZATIONS OPTIMIZATIONS
HDFS-6690. Deduplicate xattr names in memory. (wang) HDFS-6690. Deduplicate xattr names in memory. (wang)

View File

@ -237,7 +237,7 @@ class BPOfferService {
delHint); delHint);
for (BPServiceActor actor : bpServices) { for (BPServiceActor actor : bpServices) {
actor.notifyNamenodeBlockImmediately(bInfo, storageUuid); actor.notifyNamenodeBlock(bInfo, storageUuid, true);
} }
} }
@ -270,7 +270,7 @@ class BPOfferService {
block.getLocalBlock(), BlockStatus.RECEIVING_BLOCK, null); block.getLocalBlock(), BlockStatus.RECEIVING_BLOCK, null);
for (BPServiceActor actor : bpServices) { for (BPServiceActor actor : bpServices) {
actor.notifyNamenodeBlockImmediately(bInfo, storageUuid); actor.notifyNamenodeBlock(bInfo, storageUuid, false);
} }
} }

View File

@ -368,15 +368,19 @@ class BPServiceActor implements Runnable {
* till namenode is informed before responding with success to the * till namenode is informed before responding with success to the
* client? For now we don't. * client? For now we don't.
*/ */
void notifyNamenodeBlockImmediately( void notifyNamenodeBlock(ReceivedDeletedBlockInfo bInfo,
ReceivedDeletedBlockInfo bInfo, String storageUuid) { String storageUuid, boolean now) {
synchronized (pendingIncrementalBRperStorage) { synchronized (pendingIncrementalBRperStorage) {
addPendingReplicationBlockInfo( addPendingReplicationBlockInfo(
bInfo, dn.getFSDataset().getStorage(storageUuid)); bInfo, dn.getFSDataset().getStorage(storageUuid));
sendImmediateIBR = true; sendImmediateIBR = true;
// If now is true, the report is sent right away.
// Otherwise, it will be sent out in the next heartbeat.
if (now) {
pendingIncrementalBRperStorage.notifyAll(); pendingIncrementalBRperStorage.notifyAll();
} }
} }
}
void notifyNamenodeDeletedBlock( void notifyNamenodeDeletedBlock(
ReceivedDeletedBlockInfo bInfo, String storageUuid) { ReceivedDeletedBlockInfo bInfo, String storageUuid) {

View File

@ -84,7 +84,7 @@ public class TestIncrementalBlockReports {
private void injectBlockReceived() { private void injectBlockReceived() {
ReceivedDeletedBlockInfo rdbi = new ReceivedDeletedBlockInfo( ReceivedDeletedBlockInfo rdbi = new ReceivedDeletedBlockInfo(
getDummyBlock(), BlockStatus.RECEIVED_BLOCK, null); getDummyBlock(), BlockStatus.RECEIVED_BLOCK, null);
actor.notifyNamenodeBlockImmediately(rdbi, storageUuid); actor.notifyNamenodeBlock(rdbi, storageUuid, true);
} }
/** /**