Repository: hadoop Updated Branches: refs/heads/YARN-3368 1d6895580 -> 9690f297f (forced update)
HDFS-11018. Incorrect check and message in FsDatasetImpl#invalidate. Contributed by Yiqun Lin. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/6d2da38d Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/6d2da38d Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/6d2da38d Branch: refs/heads/YARN-3368 Commit: 6d2da38d16cebe9b82f1048f87127eecee33664c Parents: f872c6b Author: Wei-Chiu Chuang <weic...@apache.org> Authored: Thu Oct 20 10:49:39 2016 -0700 Committer: Wei-Chiu Chuang <weic...@apache.org> Committed: Thu Oct 20 10:56:39 2016 -0700 ---------------------------------------------------------------------- .../datanode/fsdataset/impl/FsDatasetImpl.java | 31 +++++++++++++------- 1 file changed, 21 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/6d2da38d/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl.java index ba653ac..84569f3 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl.java @@ -786,8 +786,14 @@ class FsDatasetImpl implements FsDatasetSpi<FsVolumeImpl> { throws ReplicaNotFoundException { ReplicaInfo info = volumeMap.get(b.getBlockPoolId(), b.getLocalBlock()); if (info == null) { - throw new ReplicaNotFoundException( - ReplicaNotFoundException.NON_EXISTENT_REPLICA + b); + if (volumeMap.get(b.getBlockPoolId(), b.getLocalBlock().getBlockId()) + == null) { + throw new ReplicaNotFoundException( + ReplicaNotFoundException.NON_EXISTENT_REPLICA + b); + } else { + throw new ReplicaNotFoundException( + ReplicaNotFoundException.UNEXPECTED_GS_REPLICA + b); + } } return info; } @@ -1878,16 +1884,21 @@ class FsDatasetImpl implements FsDatasetSpi<FsVolumeImpl> { try (AutoCloseableLock lock = datasetLock.acquire()) { final ReplicaInfo info = volumeMap.get(bpid, invalidBlks[i]); if (info == null) { - // It is okay if the block is not found -- it may be deleted earlier. - LOG.info("Failed to delete replica " + invalidBlks[i] - + ": ReplicaInfo not found."); - continue; - } - if (info.getGenerationStamp() != invalidBlks[i].getGenerationStamp()) { - errors.add("Failed to delete replica " + invalidBlks[i] - + ": GenerationStamp not matched, info=" + info); + ReplicaInfo infoByBlockId = + volumeMap.get(bpid, invalidBlks[i].getBlockId()); + if (infoByBlockId == null) { + // It is okay if the block is not found -- it + // may be deleted earlier. + LOG.info("Failed to delete replica " + invalidBlks[i] + + ": ReplicaInfo not found."); + } else { + errors.add("Failed to delete replica " + invalidBlks[i] + + ": GenerationStamp not matched, existing replica is " + + Block.toString(infoByBlockId)); + } continue; } + v = (FsVolumeImpl)info.getVolume(); if (v == null) { errors.add("Failed to delete replica " + invalidBlks[i] --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org