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

Eric Sirianni commented on HDFS-5448:
-------------------------------------

Arpit - thanks for the change.  The current point of UUID initialization still 
leaves a lengthy window during DataNode startup where UUID is null:
{code}
  private void connectToNNAndHandshake() throws IOException {

    // ...

// FsDatasetInitialization happens as a side effect of this call    
    bpos.verifyAndSetNamespaceInfo(nsInfo);
    
// Datanode.checkDatanodeUuid() happens as a side effect of this call
    register();
  }
{code}

Would it be possible to simply initialize the UUID immediately in the 
{{DataStorage}} constructor and then overwrite it from the actual properties 
file later via {{setFieldsFromProperties()}} (in the normal case when this is 
not the first time the DataNode has started).

(I realize we've moved a bit now from the original JIRA, but it seems 
reasonable to take care of this as part of this change)

> Datanode should generate its ID on first registration
> -----------------------------------------------------
>
>                 Key: HDFS-5448
>                 URL: https://issues.apache.org/jira/browse/HDFS-5448
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>          Components: datanode
>    Affects Versions: Heterogeneous Storage (HDFS-2832)
>            Reporter: Arpit Agarwal
>            Assignee: Arpit Agarwal
>             Fix For: Heterogeneous Storage (HDFS-2832)
>
>         Attachments: h5448.01.patch, h5448.03.patch, h5448.04.addendum.patch, 
> h5448.04.patch
>
>
> Prior to the heterogeneous storage feature, each Datanode had a single 
> storage ID which was generated by the Namenode on first registration. The 
> storage ID used fixed Datanode identifiers like IP address and port, so that 
> in a federated cluster, for example, all NameNodes would generate the same 
> storage ID.
> With Heterogeneous storage, we have replaced the storage ID with a 
> per-datanode identifier called the Datanode-UUID. The Datanode UUID is also 
> assigned by a NameNode on first registration. In a federated cluster with 
> multiple namenodes, there are two ways to ensure a unique Datanode UUID 
> allocation:
> # Synchronize initial registration requests from the BPServiceActors. If a 
> Datanode UUID is already assigned we don't need to synchronize.
> # The datanode assigns itself a UUID on initialization.



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to