Junping Du created YARN-3367:

             Summary: 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: Junping Du

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

Reply via email to