HDFS-12556: [SPS] : Block movement analysis should be done in read lock.

This commit is contained in:
Surendra Singh Lilhore 2017-10-14 15:11:26 +05:30 committed by Uma Maheswara Rao Gangumalla
parent 00eceed233
commit 5780f0624d
2 changed files with 19 additions and 10 deletions

View File

@ -242,12 +242,25 @@ public void run() {
ItemInfo itemInfo = storageMovementNeeded.get();
if (itemInfo != null) {
long trackId = itemInfo.getTrackId();
BlockCollection blockCollection =
namesystem.getBlockCollection(trackId);
BlockCollection blockCollection;
BlocksMovingAnalysis status = null;
try {
namesystem.readLock();
blockCollection = namesystem.getBlockCollection(trackId);
// Check blockCollectionId existence.
if (blockCollection == null) {
// File doesn't exists (maybe got deleted), remove trackId from
// the queue
storageMovementNeeded.removeItemTrackInfo(itemInfo);
} else {
status =
analyseBlocksStorageMovementsAndAssignToDN(
blockCollection);
}
} finally {
namesystem.readUnlock();
}
if (blockCollection != null) {
BlocksMovingAnalysis status =
analyseBlocksStorageMovementsAndAssignToDN(blockCollection);
switch (status.status) {
// Just add to monitor, so it will be retried after timeout
case ANALYSIS_SKIPPED_FOR_RETRY:
@ -283,10 +296,6 @@ public void run() {
storageMovementNeeded.removeItemTrackInfo(itemInfo);
break;
}
} else {
// File doesn't exists (maybe got deleted), remove trackId from
// the queue
storageMovementNeeded.removeItemTrackInfo(itemInfo);
}
}
}

View File

@ -72,7 +72,7 @@ public class TestPersistentStoragePolicySatisfier {
{StorageType.DISK, StorageType.ARCHIVE, StorageType.SSD}
};
private final int timeout = 300000;
private final int timeout = 90000;
/**
* Setup environment for every test case.