[
https://issues.apache.org/jira/browse/HDFS-9319?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14981603#comment-14981603
]
Chris Nauroth commented on HDFS-9319:
-------------------------------------
Hi [~jingzhao]. The patch looks good overall. There is a small inconsistency
in that {{volumeFailures}} and {{volumeFailureSummary}} are updated outside the
lock, whereas all of the other heartbeat information is captured in
{{DatanodeState}} and updated atomically inside the lock. This is probably not
a big deal in practice, but do you think it makes sense to expand the lock just
a little to cover those 2 pieces of data? This would guarantee that all state
reflects the outcome of the last processed heartbeat. For example:
{code}
synchronized(this) {
this.volumeFailures = volFailures;
this.volumeFailureSummary = volumeFailureSummary;
// Update total metrics for the node.
updateState(totalCapacity, totalDfsUsed, totalRemaining,
totalBlockPoolUsed,
cacheCapacity, cacheUsed, lastUpdate, lastUpdateMonotonic,
xceiverCount);
}
{code}
Let me know your thoughts. Thanks!
> Make DatanodeInfo thread safe
> -----------------------------
>
> Key: HDFS-9319
> URL: https://issues.apache.org/jira/browse/HDFS-9319
> Project: Hadoop HDFS
> Issue Type: Sub-task
> Reporter: Jing Zhao
> Assignee: Jing Zhao
> Attachments: HDFS-9319.000.patch
>
>
> This jira plans to make DatanodeInfo's internal states independent of
> external locks. Note because DatanodeInfo extends DatanodeID, we still need
> to change DatanodeID as a follow-on work.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)