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/12 18:42:19 UTC
[jira] [Created] (HDFS-5505) DataStorage.format() should ignore
NamespaceID
Eric Sirianni created HDFS-5505:
-----------------------------------
Summary: DataStorage.format() should ignore NamespaceID
Key: HDFS-5505
URL: https://issues.apache.org/jira/browse/HDFS-5505
Project: Hadoop HDFS
Issue Type: Bug
Components: datanode, federation
Affects Versions: 2.2.0
Reporter: Eric Sirianni
Priority: Minor
I'm observing inconsistencies in the {{DataStorage.namespaceID}} value passed in to my {{FsDatasetSpi}} plugin:
* Upon _initial_ startup (when the DataNode is formatted), the storage {{DataStorage.namespaceID}} value is populated with the namespace ID from the NameNode (or an arbitrary namenode in a federated setup).
* Upon subsequent startups the {{DataStorage.namespaceID}} value is {{NULL}}.
The issue appears to be different handling of the {{DataStorage.namespaceID}} value in {{DataStorage.format()}} vs. {{DataStorage.setFieldsFromProperties()}}:
{code:title=DataStorage.java}
void format(StorageDirectory sd, NamespaceInfo nsInfo, String datanodeUuid) throws IOException {
sd.clearDirectory(); // create directory
this.layoutVersion = HdfsConstants.LAYOUT_VERSION;
this.clusterID = nsInfo.getClusterID();
this.namespaceID = nsInfo.getNamespaceID();
}
....
protected void setFieldsFromProperties(Properties props, StorageDirectory sd)
// Read NamespaceID in version before federation
if (!LayoutVersion.supports(Feature.FEDERATION, layoutVersion)) {
setNamespaceID(props, sd);
}
{code}
If I understand correctly, the proper fix is to leave namespaceID *unset* in {{DataStorage.format()}}. The namespaceID here is invalid anyway since it is susceptible to race conditions in federated NameNode setups -- it will happen to match the namespaceID of the first {{BPOfferService}} thread that successfully handshakes.
--
This message was sent by Atlassian JIRA
(v6.1#6144)