HDFS-7217. Better batching of IBRs. Contributed by Kihwal Lee.
(cherry picked from commit db71bb54bc
)
This commit is contained in:
parent
f86c9c6c71
commit
0280e9aee0
|
@ -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)
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue