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

Naganarasimha G R commented on YARN-3367:
-----------------------------------------

Hi [~sjlee0] , Thanks for the comments, 
Went through the comments which had pointed out  in YARN-4061. Felt most of 
them valid.
bq. Whether we will do that on the sync side or not, I think we have some 
flexibility.
You mean that flush need not be coupled with the sync call ? if so will we be 
exposing one more interface in client side ? Felt coupling flush with sync was 
a better option.

bq. As for the timestamps, I am also arguing that the timestamps should always 
be set explicitly for entities/metrics/events, and that the server should rely 
on the explicit timestamps, rather than on time of receipt.
Agree with your points only concerned what were issues/points [~djp] had, when 
he had mentioned in the description as 
bq. 3. The sequence of events could be out of order because each posting 
operation thread get out of waiting loop randomly. We should have something 
like event loop in TimelineClient side, putEntities() only put related entities 
into a queue of entities and a separated thread handle to deliver entities in 
queue to collector via REST call.


> Replace starting a separate thread for post entity with event loop in 
> TimelineClient
> ------------------------------------------------------------------------------------
>
>                 Key: YARN-3367
>                 URL: https://issues.apache.org/jira/browse/YARN-3367
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>          Components: timelineserver
>    Affects Versions: YARN-2928
>            Reporter: Junping Du
>            Assignee: Naganarasimha G R
>         Attachments: YARN-3367.YARN-2928.001.patch
>
>
> Since YARN-3039, we add loop in TimelineClient to wait for 
> collectorServiceAddress ready before posting any entity. In consumer of  
> TimelineClient (like AM), we are starting a new thread for each call to get 
> rid of potential deadlock in main thread. This way has at least 3 major 
> defects:
> 1. The consumer need some additional code to wrap a thread before calling 
> putEntities() in TimelineClient.
> 2. It cost many thread resources which is unnecessary.
> 3. The sequence of events could be out of order because each posting 
> operation thread get out of waiting loop randomly.
> We should have something like event loop in TimelineClient side, 
> putEntities() only put related entities into a queue of entities and a 
> separated thread handle to deliver entities in queue to collector via REST 
> call.



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

Reply via email to