[
https://issues.apache.org/jira/browse/HDFS-10791?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15436085#comment-15436085
]
Yiqun Lin commented on HDFS-10791:
----------------------------------
Hi, [~szetszwo], this issue seems has been fixed, the related codes:
{code:title=FsDatasetImpl.java|borderStyle=solid}
public void checkAndUpdate(String bpid, long blockId, File diskFile,
File diskMetaFile, FsVolumeSpi vol) throws IOException {
Block corruptBlock = null;
ReplicaInfo memBlockInfo;
try (AutoCloseableLock lock = datasetLock.acquire()) {
memBlockInfo = volumeMap.get(bpid, blockId);
if (memBlockInfo != null && memBlockInfo.getState() !=
ReplicaState.FINALIZED) {
// Block is not finalized - ignore the difference
return;
}
final long diskGS = diskMetaFile != null && diskMetaFile.exists() ?
Block.getGenerationStamp(diskMetaFile.getName()) :
HdfsConstants.GRANDFATHER_GENERATION_STAMP;
if (diskFile == null || !diskFile.exists()) {
if (memBlockInfo == null) {
// Block file does not exist and block does not exist in memory
// If metadata file exists then delete it
if (diskMetaFile != null && diskMetaFile.exists()
&& diskMetaFile.delete()) {
LOG.warn("Deleted a metadata file without a block "
+ diskMetaFile.getAbsolutePath());
}
return;
}
...
}
{code}
> Delete block meta file when the block file is missing
> -----------------------------------------------------
>
> Key: HDFS-10791
> URL: https://issues.apache.org/jira/browse/HDFS-10791
> Project: Hadoop HDFS
> Issue Type: Improvement
> Components: datanode
> Reporter: Tsz Wo Nicholas Sze
>
> When the block file is missing, the block meta file should be deleted if it
> exists.
> Note that such situation is possible since the meta file is closed before the
> block file, the datanode could be killed in-between.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]