[ 
https://issues.apache.org/jira/browse/HDFS-14852?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17182659#comment-17182659
 ] 

Fei Hui commented on HDFS-14852:
--------------------------------

[~hexiaoqiao] Thanks for review, Forget to remove original code. Upload v007 
patch.
When transition standby namenode to active, we found corrupt blocks. After 
deleting the corrupt files, we still found that "There are 2 corrupt blocks". I 
think If we delete the file, blocks should not in any queue. Didn't dig into 
why one block added into 2 queues and this didn't reproduce easily.

> Remove of LowRedundancyBlocks do NOT remove the block from all queues
> ---------------------------------------------------------------------
>
>                 Key: HDFS-14852
>                 URL: https://issues.apache.org/jira/browse/HDFS-14852
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: namenode
>    Affects Versions: 3.2.0, 3.0.3, 3.1.2, 3.3.0
>            Reporter: Fei Hui
>            Assignee: Fei Hui
>            Priority: Major
>         Attachments: CorruptBlocksMismatch.png, HDFS-14852.001.patch, 
> HDFS-14852.002.patch, HDFS-14852.003.patch, HDFS-14852.004.patch, 
> HDFS-14852.005.patch, HDFS-14852.006.patch, screenshot-1.png
>
>
> LowRedundancyBlocks.java
> {code:java}
> // Some comments here
>     if(priLevel >= 0 && priLevel < LEVEL
>         && priorityQueues.get(priLevel).remove(block)) {
>       NameNode.blockStateChangeLog.debug(
>           "BLOCK* NameSystem.LowRedundancyBlock.remove: Removing block {}"
>               + " from priority queue {}",
>           block, priLevel);
>       decrementBlockStat(block, priLevel, oldExpectedReplicas);
>       return true;
>     } else {
>       // Try to remove the block from all queues if the block was
>       // not found in the queue for the given priority level.
>       for (int i = 0; i < LEVEL; i++) {
>         if (i != priLevel && priorityQueues.get(i).remove(block)) {
>           NameNode.blockStateChangeLog.debug(
>               "BLOCK* NameSystem.LowRedundancyBlock.remove: Removing block" +
>                   " {} from priority queue {}", block, i);
>           decrementBlockStat(block, i, oldExpectedReplicas);
>           return true;
>         }
>       }
>     }
>     return false;
>   }
> {code}
> Source code is above, the comments as follow
> {quote}
>       // Try to remove the block from all queues if the block was
>       // not found in the queue for the given priority level.
> {quote}
> The function "remove" does NOT remove the block from all queues.
> Function add from LowRedundancyBlocks.java is used on some places and maybe 
> one block in two or more queues.
> We found that corrupt blocks mismatch corrupt files on NN web UI. Maybe it is 
> related to this.
> Upload initial patch



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org

Reply via email to