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

Vrushali C commented on YARN-4700:
----------------------------------

Hi [~Naganarasimha]

Thanks for the patch. I believe the constructor for FlowActivityRowKey should 
change to correctly calculate top of the day timestamp given the input 
timestamp. That is the reason the unit test is failing I think, since the 
FlowActivityRowKey is constructed with 
FlowActivityRowKey.getRowKey(clusterStop, appCreatedTime, user, flow). 

Also,I think we can remove the  function FlowActivityRowKey #getRowKey(String 
clusterId, String userId, String  * flowName) and only keep the 
FlowActivityRowKey# getRowKey(String clusterId, long dayTs, String userId, 
String flowName) . That way it's easier to clean up the unit tests as well.

And I think you can change the unit test to use different timestamps (but keep 
the same semantics, i.e. min start time should actually be the lowest one etc), 
that way it will be easier to refactor the unit test. Let me know if this 
helps. Right now the unit test checks in the flow activity table that one entry 
has been made for all of these 4 application entities so you can use the 
timestamps that belong to exactly the same day. Or if you use timestamps 
belonging to different days, change the test to look for those many entries.

Another thing is that, it looks like the event timestamp that is being used is 
the timelineEvents.next().getTimestamp(). It might be more explicit to fetch 
the exact created (or finished) event from the TimelineEntity and use the 
timestamp that belong to either ApplicationMetricsConstants.CREATED_EVENT_TYPE 
or ApplicationMetricsConstants.FINISHED_EVENT_TYPE. That way, we are using the 
accurate event time to make an entry into the flow activity table. You can use 
TimelineStorageUtils # getApplicationFinishedTime() function for getting the 
timestamp for the FINISHED event. You would have to write a new function to do 
a similar thing for fetching CREATED event timestamp (or refactor further and 
use the same function to get the right event's timestamp).

Hope this helps.. Let me know..

thanks
Vrushali

> ATS storage has one extra record each time the RM got restarted
> ---------------------------------------------------------------
>
>                 Key: YARN-4700
>                 URL: https://issues.apache.org/jira/browse/YARN-4700
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>          Components: timelineserver
>    Affects Versions: YARN-2928
>            Reporter: Li Lu
>            Assignee: Naganarasimha G R
>              Labels: yarn-2928-1st-milestone
>         Attachments: YARN-4700-YARN-2928.v1.001.patch, 
> YARN-4700-YARN-2928.wip.patch
>
>
> When testing the new web UI for ATS v2, I noticed that we're creating one 
> extra record for each finished application (but still hold in the RM state 
> store) each time the RM got restarted. It's quite possible that we add the 
> cluster start timestamp into the default cluster id, thus each time we're 
> creating a new record for one application (cluster id is a part of the row 
> key). We need to fix this behavior, probably by having a better default 
> cluster id. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to