You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-dev@hadoop.apache.org by "Eric Sirianni (JIRA)" <ji...@apache.org> on 2013/11/08 19:46:17 UTC
[jira] [Created] (HDFS-5484) StorageType and State in
DatanodeStorageInfo in NameNode is not accurate
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)