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

Zhijie Shen commented on YARN-2517:
-----------------------------------

Thanks for sharing your idea, Hitesh, Mit and Sangjin! I'd like to make some 
clarification. The error that the handler wants to take care of is not the 
communication problem, but the problem that happens when the server is 
processing the posted timeline entity (See TimelinePutResponse). It could be 
the data integrity issue that is messed up by the app. For example, the posted 
Entity A in Domain 1 is trying to relate to Entity B in Domain 2. It's fine if 
in some use cases, the app doesn't want to care about it, and consequently 
doesn't require an Ack. The app can just go ahead without providing the 
handler. However, it's still better to be generic enough to cover the other use 
cases where the app wants to make sure it has the timeline data persisted, or 
at least know it is succeeded or not.

Queueing/messaging layer may help to mitigate the communication problem, but 
aforementioned data problem still could happen, such that the app may still 
want to hear about the put response. However, it sounds right that the 
implementation of this layer will affect that of async call. It makes sense to 
wait until we make it clear how to make client <-> TS communication reliable. 
If we eventually find handler in async call is difficult and will further 
prevent optimization, "a sync write (as it stands now) for critical data and an 
async write which is basically fire-and-forge" sounds a reasonable alternative 
plan.

> Implement TimelineClientAsync
> -----------------------------
>
>                 Key: YARN-2517
>                 URL: https://issues.apache.org/jira/browse/YARN-2517
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>            Reporter: Zhijie Shen
>            Assignee: Tsuyoshi OZAWA
>         Attachments: YARN-2517.1.patch, YARN-2517.2.patch
>
>
> In some scenarios, we'd like to put timeline entities in another thread no to 
> block the current one.
> It's good to have a TimelineClientAsync like AMRMClientAsync and 
> NMClientAsync. It can buffer entities, put them in a separate thread, and 
> have callback to handle the responses.



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

Reply via email to