HDFS-11018. Incorrect check and message in FsDatasetImpl#invalidate. Contributed by Yiqun Lin.
This commit is contained in:
parent
f872c6bc03
commit
6d2da38d16
|
@ -786,8 +786,14 @@ class FsDatasetImpl implements FsDatasetSpi<FsVolumeImpl> {
|
||||||
throws ReplicaNotFoundException {
|
throws ReplicaNotFoundException {
|
||||||
ReplicaInfo info = volumeMap.get(b.getBlockPoolId(), b.getLocalBlock());
|
ReplicaInfo info = volumeMap.get(b.getBlockPoolId(), b.getLocalBlock());
|
||||||
if (info == null) {
|
if (info == null) {
|
||||||
throw new ReplicaNotFoundException(
|
if (volumeMap.get(b.getBlockPoolId(), b.getLocalBlock().getBlockId())
|
||||||
ReplicaNotFoundException.NON_EXISTENT_REPLICA + b);
|
== null) {
|
||||||
|
throw new ReplicaNotFoundException(
|
||||||
|
ReplicaNotFoundException.NON_EXISTENT_REPLICA + b);
|
||||||
|
} else {
|
||||||
|
throw new ReplicaNotFoundException(
|
||||||
|
ReplicaNotFoundException.UNEXPECTED_GS_REPLICA + b);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
@ -1878,16 +1884,21 @@ class FsDatasetImpl implements FsDatasetSpi<FsVolumeImpl> {
|
||||||
try (AutoCloseableLock lock = datasetLock.acquire()) {
|
try (AutoCloseableLock lock = datasetLock.acquire()) {
|
||||||
final ReplicaInfo info = volumeMap.get(bpid, invalidBlks[i]);
|
final ReplicaInfo info = volumeMap.get(bpid, invalidBlks[i]);
|
||||||
if (info == null) {
|
if (info == null) {
|
||||||
// It is okay if the block is not found -- it may be deleted earlier.
|
ReplicaInfo infoByBlockId =
|
||||||
LOG.info("Failed to delete replica " + invalidBlks[i]
|
volumeMap.get(bpid, invalidBlks[i].getBlockId());
|
||||||
+ ": ReplicaInfo not found.");
|
if (infoByBlockId == null) {
|
||||||
continue;
|
// It is okay if the block is not found -- it
|
||||||
}
|
// may be deleted earlier.
|
||||||
if (info.getGenerationStamp() != invalidBlks[i].getGenerationStamp()) {
|
LOG.info("Failed to delete replica " + invalidBlks[i]
|
||||||
errors.add("Failed to delete replica " + invalidBlks[i]
|
+ ": ReplicaInfo not found.");
|
||||||
+ ": GenerationStamp not matched, info=" + info);
|
} else {
|
||||||
|
errors.add("Failed to delete replica " + invalidBlks[i]
|
||||||
|
+ ": GenerationStamp not matched, existing replica is "
|
||||||
|
+ Block.toString(infoByBlockId));
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
v = (FsVolumeImpl)info.getVolume();
|
v = (FsVolumeImpl)info.getVolume();
|
||||||
if (v == null) {
|
if (v == null) {
|
||||||
errors.add("Failed to delete replica " + invalidBlks[i]
|
errors.add("Failed to delete replica " + invalidBlks[i]
|
||||||
|
|
Loading…
Reference in New Issue