Description
In method FsDatasetImpl#checkAndUpdate, there is below code snippet:
if (memBlockInfo.blockDataExists()) { if (memBlockInfo.getBlockURI().compareTo(diskFile.toURI()) != 0) { if (diskMetaFileExists) { if (memBlockInfo.metadataExists()) { // We have two sets of block+meta files. Decide which one to // keep. ReplicaInfo diskBlockInfo = new ReplicaBuilder(ReplicaState.FINALIZED) .setBlockId(blockId) .setLength(diskFile.length()) .setGenerationStamp(diskGS) .setFsVolume(vol) .setDirectoryToUse(diskFile.getParentFile()) .build(); ((FsVolumeImpl) vol).resolveDuplicateReplicas(bpid, memBlockInfo, diskBlockInfo, volumeMap); } } else { // ..... } if (!fileIoProvider.delete(vol, diskFile)) { LOG.warn("Failed to delete " + diskFile); } } } }
It does resolveDuplicateReplicas when memBlockInfo.metadataExists() returns true. Do we need to add some logic here when memBlockInfo.metadataExists() returns false?