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

Sangjin Lee commented on YARN-4675:
-----------------------------------

I agree that we need to have a firm conclusion one way or another on this 
before the next release.

There are two aspects to this: (1) reorganize {{TimelineClientImpl}} into v.1 
specific code and v.2 specific code, and (2) create separate interfaces (APIs) 
for v.1 and v.2.

IMO, (1) is not very controversial and that's what's captured in the current 
patch. I think we should do it as it's more of an internal "implementation 
detail". For the most part, clients should *not* use {{TimelineClientImpl}} or 
other impl classes directly but rather stick with {{TimelineClient}}. I do see 
some references to {{TimelineClientImpl}} in MR and distributed shell and what 
not, and it might be good to address them to avoid using {{TimelineClientImpl}} 
as much as possible.

On the other hand, (2) is a little bigger issue as it affects how clients will 
implement using timeline service. The initial desire was to stick with a single 
interface ({{TimelineClient}}) for both v.1 and v.2 because we wanted to 
minimize the impact on client code. However, since we have new entity API, we 
still had to have v.1-specific methods and v.2-specific methods. Therefore, 
clients still need to do things like:
{code}
if (v.1) {
  client.putEntities(...); // call the v.1 method
} else {
  client.putEntities(...); // call the v.2 method
}
{code}
So retaining a single interface doesn't really help them much. There is also 
the aspect of preparing the entities in a different way, depending on v.1 or 
v.2.

So, in that sense, it doesn't seem that bad to separate the interface itself. 
This is still a much more significant change because it would impact all the 
client code (MR, DS, Tez, etc.). What are your thoughts on both aspects?

> Reorganize TimeClientImpl into TimeClientV1Impl and TimeClientV2Impl
> --------------------------------------------------------------------
>
>                 Key: YARN-4675
>                 URL: https://issues.apache.org/jira/browse/YARN-4675
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>          Components: timelineserver
>            Reporter: Naganarasimha G R
>            Assignee: Naganarasimha G R
>              Labels: YARN-5355, oct16-medium
>         Attachments: YARN-4675-YARN-2928.v1.001.patch
>
>
> We need to reorganize TimeClientImpl into TimeClientV1Impl ,  
> TimeClientV2Impl and if required a base class, so that its clear which part 
> of the code belongs to which version and thus better maintainable.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: yarn-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: yarn-issues-h...@hadoop.apache.org

Reply via email to