hadoop-yarn-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sangjin Lee (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (YARN-4675) Reorganize TimeClientImpl into TimeClientV1Impl and TimeClientV2Impl
Date Tue, 06 Dec 2016 18:56:58 GMT

    [ 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-unsubscribe@hadoop.apache.org
For additional commands, e-mail: yarn-issues-help@hadoop.apache.org


Mime
View raw message