[ 
https://issues.apache.org/jira/browse/HDFS-17962?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ZanderXu resolved HDFS-17962.
-----------------------------
    Resolution: Fixed

> NNTop may lose user metrics during expired window cleanup
> ---------------------------------------------------------
>
>                 Key: HDFS-17962
>                 URL: https://issues.apache.org/jira/browse/HDFS-17962
>             Project: Hadoop HDFS
>          Issue Type: Bug
>            Reporter: Yue Wang
>            Assignee: Yue Wang
>            Priority: Major
>              Labels: pull-request-available
>
> NNTop stores a RollingWindow for each (metric, user) pair in a 
> ConcurrentHashMap.
> In RollingWindowManager#getTopUsersForMetric(), expired user windows are 
> removed when getSum(time) returns 0. Previously, the cleanup used an iterator 
> to remove the map entry, while RollingWindowManager#recordMetric() obtained a 
> RollingWindow from the map and incremented it outside of any per-key atomic 
> operation.
> This allows the following race:
> 1. A recordMetric() thread obtains an existing RollingWindow for a user.
> 2. A snapshot thread observes that the window sum is 0 and removes the 
> user-to-window mapping.
> 3. The recordMetric() thread increments the RollingWindow it obtained earlier.
> 4. The increment is applied to an object that is no longer in the map, so the 
> metric is lost from subsequent NNTop snapshots.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to