Eric Sirianni created HDFS-5484: ----------------------------------- Summary: StorageType and State in DatanodeStorageInfo in NameNode is not accurate Key: HDFS-5484 URL: https://issues.apache.org/jira/browse/HDFS-5484 Project: Hadoop HDFS Issue Type: Bug Components: datanode Affects Versions: Heterogeneous Storage (HDFS-2832) Reporter: Eric Sirianni
The fields in DatanodeStorageInfo are updated from two distinct paths: # block reports # storage reports (via heartbeats) The {{state}} and {{storageType}} fields are updated via the Block Report. However, as seen in the code blow, these fields are populated from a "dummy" {{DatanodeStorage}} object constructed in the DataNode: {code} BPServiceActor.blockReport() { //... // Dummy DatanodeStorage object just for sending the block report. DatanodeStorage dnStorage = new DatanodeStorage(storageID); //... } {code} The net effect is that the {{state}} and {{storageType}} fields are always the default of {{NORMAL}} and {{DISK}} in the NameNode. The recommended fix is to change {{FsDatasetSpi.getBlockReports()}} from: {code} public Map<String, BlockListAsLongs> getBlockReports(String bpid); {code} to: {code} public Map<DatanodeStorage, BlockListAsLongs> getBlockReports(String bpid); {code} thereby allowing {{BPServiceActor}} to send the "real" {{DatanodeStorage}} object with the block report. -- This message was sent by Atlassian JIRA (v6.1#6144)