hadoop-hdfs-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Harsh J (Resolved) (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (HDFS-973) DataNode.setDataNode() considered dangerous
Date Sat, 07 Jan 2012 15:57:39 GMT

     [ 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


View raw message