[
https://issues.apache.org/jira/browse/HDFS-6978?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14132214#comment-14132214
]
Jitendra Nath Pandey commented on HDFS-6978:
--------------------------------------------
+1 for the patch.
A minor comment:
{code}
+ if (d < blockpoolReport.length) {
+ // There may be multiple on-disk records for the same block, don't
increment
+ // the memory record pointer if so.
+ ScanInfo nextInfo = blockpoolReport[Math.min(d,
blockpoolReport.length - 1)];
{code}
Math.min(d, blockpoolReport.length - 1) will always be equal to d, unless we
have race conditions. I think the same applies to the previous lines with
Math.min as well.
> Directory scanner should correctly reconcile blocks on RAM disk
> ---------------------------------------------------------------
>
> Key: HDFS-6978
> URL: https://issues.apache.org/jira/browse/HDFS-6978
> Project: Hadoop HDFS
> Issue Type: Sub-task
> Components: datanode
> Affects Versions: HDFS-6581
> Reporter: Arpit Agarwal
> Assignee: Arpit Agarwal
> Attachments: HDFS-6978.01.patch
>
>
> It used to be very unlikely that the directory scanner encountered two
> replicas of the same block on different volumes.
> With memory storage, it is very likely to hit this with the following
> sequence of events:
> # Block is written to RAM disk
> # Lazy writer saves a copy on persistent volume
> # DN attempts to evict the original replica from RAM disk, file deletion
> fails as the replica is in use.
> # Directory scanner finds a replica on both RAM disk and persistent storage.
> The directory scanner should never delete the block on persistent storage.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)