[
https://issues.apache.org/jira/browse/HDFS-973?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Harsh J resolved HDFS-973.
--------------------------
Resolution: Cannot Reproduce
This does not seem to be a problem in 0.23+, reading the DataNode instantiation
code.
> DataNode.setDataNode() considered dangerous
> -------------------------------------------
>
> Key: HDFS-973
> URL: https://issues.apache.org/jira/browse/HDFS-973
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: data-node
> Affects Versions: 0.22.0
> Reporter: Steve Loughran
> Priority: Minor
>
> I don't have any plans to address this, but it seems to me that having the
> DataNode save a reference to itself in its constructor by way of
> {{DataNode.setDataNode(this)}} is hazardous.
> # The reference could be used before the constructor has finished, especially
> when subclasses are involved
> # Callers may assume the DN is actually live
> # If startup fails, the DN tries to shut down, but the reference hangs
> around. Dangerous as well as leaking a reference
> # The reference gets retained forever
> # It's a singleton that will get confused if >1 DN gets instantiated in-VM
> The likely way these problems will surface are in race conditions that are
> more likely the more cores you have on the machine -production rather than
> development. This is why it is dangerous.
> As part of the service lifecycle patch, I could have this reference only set
> when the service gets started, set it to null when stopped (and the
> reference==this). But really the singleton should be removed altogether,
> somehow. There are methods in DataNode, DataStorage, FSDataset and the
> namenode that do this, and they should somehow get a reference to any in-VM
> DN in a cleaner way. For example, servlets can have it set as servlet context.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira