[ 
https://issues.apache.org/jira/browse/HDFS-15274?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

HuangTao updated HDFS-15274:
----------------------------
    Attachment: HDFS-15274.001.patch
        Status: Patch Available  (was: Open)

> NN doesn't remove the blocks from the failed DatanodeStorageInfo
> ----------------------------------------------------------------
>
>                 Key: HDFS-15274
>                 URL: https://issues.apache.org/jira/browse/HDFS-15274
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: namenode
>    Affects Versions: 3.4.0
>            Reporter: HuangTao
>            Assignee: HuangTao
>            Priority: Major
>         Attachments: HDFS-15274.001.patch
>
>
> In our federation cluster, we found there were some inconsistency failure 
> volumes between two namespaces. The following logs are two NS separately.
> NS1 received the failed storage info and removed the blocks associated with 
> the failed storage.
> {code:java}
> [INFO] [IPC Server handler 76 on 8021] : Number of failed storages changes 
> from 0 to 1
> [INFO] [IPC Server handler 76 on 8021] : 
> [DISK]DS-298de29e-9104-48dd-a674-5443a6126969:NORMAL:X.X.X.X:50010:/data0/dfs 
> failed.
> [INFO] 
> [org.apache.hadoop.hdfs.server.blockmanagement.HeartbeatManager$Monitor@4fb57fb3]
>  : Removed blocks associated with storage 
> [DISK]DS-298de29e-9104-48dd-a674-5443a6126969:FAILED:X.X.X.X:50010:/data0/dfs 
> from DataNode X.X.X.X:50010
> [INFO] [IPC Server handler 73 on 8021] : Removed storage 
> [DISK]DS-298de29e-9104-48dd-a674-5443a6126969:FAILED:X.X.X.X:50010:/data0/dfs 
> from DataNode X.X.X.X:50010{code}
> NS2 just received the failed storage.
> {code:java}
> [INFO] [IPC Server handler 87 on 8021] : Number of failed storages changes 
> from 0 to 1  {code}
>  
> After digging into the code and trying to simulate disk failed with
> {code:java}
> echo offline > /sys/block/sda/device/state
> echo 1 > /sys/block/sda/device/delete
> # re-mount the failed disk
> rescan-scsi-bus.sh -a
> systemctl daemon-reload
> mount /data0
> {code}
> I found the root reason is the inconsistency between StorageReport and 
> VolumeFailureSummary in BPServiceActor#sendHeartBeat.
> {code}
> StorageReport[] reports =
>         dn.getFSDataset().getStorageReports(bpos.getBlockPoolId());
>   ......
>   // the DISK may FAILED before executing the next line
>     VolumeFailureSummary volumeFailureSummary = dn.getFSDataset()
>         .getVolumeFailureSummary();
>     int numFailedVolumes = volumeFailureSummary != null ?
>         volumeFailureSummary.getFailedStorageLocations().length : 0;
> {code} 
> I improved the tolerance in NN DatanodeDescriptor#updateStorageStats to solve 
> this issue.



--
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