[
https://issues.apache.org/jira/browse/YARN-3367?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15070009#comment-15070009
]
Naganarasimha G R commented on YARN-3367:
-----------------------------------------
thanks [~djp] for looking into this issue.
bq. Sounds good. I just commit YARN-4400 to trunk.
Sorry mislead with wrong jira number actually thought YARN-4457 of [~templedf],
can solve the issue, just took a further look, *AsyncDispatcher* has been coded
to handle Events only (like AsyncDispatcher's *BlockingQueue<Event>
eventQueue*, EventHandler's *handle(T event)* ..). Hence its not easy to
replace, so probability to reuse for dispatching *Timeline Entities* is bit
difficult(/ far too many changes for little re-usability).
bq. Does TimelineEntityAsyncDispatcher can be reused by other classes? If not,
better to keep it as private class.
Though the plan for this class is only to be used by TimelineClientImpl, class
is getting cluttered with V1 and V2 code, and impacting readability, hence
thought of v2 publishing part of the code in TimelineClientImpl to be moved
along with the TimelineEntityAsyncDispatcher, thoughts?
> 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
> Labels: yarn-2928-1st-milestone
> Attachments: YARN-3367-feature-YARN-2928.003.patch,
> YARN-3367-feature-YARN-2928.v1.002.patch,
> YARN-3367-feature-YARN-2928.v1.004.patch, 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)