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.
(Brandon Li via wheat9)
HDFS-7217. Better batching of IBRs. (kihwal)
OPTIMIZATIONS
HDFS-6690. Deduplicate xattr names in memory. (wang)

View File

@ -237,7 +237,7 @@ class BPOfferService {
delHint);
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);
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
* client? For now we don't.
*/
void notifyNamenodeBlockImmediately(
ReceivedDeletedBlockInfo bInfo, String storageUuid) {
void notifyNamenodeBlock(ReceivedDeletedBlockInfo bInfo,
String storageUuid, boolean now) {
synchronized (pendingIncrementalBRperStorage) {
addPendingReplicationBlockInfo(
bInfo, dn.getFSDataset().getStorage(storageUuid));
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();
}
}
}
void notifyNamenodeDeletedBlock(
ReceivedDeletedBlockInfo bInfo, String storageUuid) {

View File

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