[
https://issues.apache.org/jira/browse/HDFS-9516?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15049644#comment-15049644
]
Konstantin Shvachko commented on HDFS-9516:
-------------------------------------------
Indeed, looks like an attempt to rename across volumes. Good catch, Bogdan. And
analysis too.
The problem is that {{copyReplicaWithNewBlockIdAndGS()}} does not take into
account which volume is the {{rur}} replica on, and can choose a different one.
I don't think this affects anything, but truncate in the case of
copy-on-truncate, which involves upgrades and snapshots.
I was wondering if you traced this condition further in time. This recovery
should fail, and another would start some time later, eventually the same
volume should be chosen and that last recovery should succeed.
> truncate file fails with data dirs on multiple disks
> ----------------------------------------------------
>
> Key: HDFS-9516
> URL: https://issues.apache.org/jira/browse/HDFS-9516
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: datanode
> Affects Versions: 2.7.1
> Reporter: Bogdan Raducanu
> Attachments: Main.java, truncate.dn.log
>
>
> FileSystem.truncate returns false (no exception) but the file is never closed
> and not writable after this.
> It seems to be because of copy on truncate which is used because the system
> is in upgrade state. In this case a rename between devices is attempted.
> See attached log and repro code.
> Probably also affects truncate snapshotted file when copy on truncate is also
> used.
> Possibly it affects not only truncate but any block recovery.
> I think the problem is in updateReplicaUnderRecovery
> {code}
> ReplicaBeingWritten newReplicaInfo = new ReplicaBeingWritten(
> newBlockId, recoveryId, rur.getVolume(),
> blockFile.getParentFile(),
> newlength);
> {code}
> blockFile is created with copyReplicaWithNewBlockIdAndGS which is allowed to
> choose any volume so rur.getVolume() is not where the block is located.
>
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)