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

Sangjin Lee commented on YARN-5130:
-----------------------------------

If the class is declared Public/Stable, no changes to the class that break the 
Stable contract should be made between non-major releases *regardless of the 
method visibility/stability*. For example, the following would break the 
stability:
- adding a new abstract method, whether that method is stable, evolving, or 
even private
- renaming a public method
Although it may be possible to have methods with weaker stability/visibility, 
they still MUST not break the class contract. IMO, relaxing the class contract 
from Stable to Evolving would be an incompatible change in itself.

We need to address the existing violations to ContainerStatus and NodeReport by 
adding a default implementation for *minor releases*.
- ContainerStatus: YARN-3866 (2.8)
- NodeReport: YARN-4293 (2.8)

There are subsequent changes to ContainerStatus by YARN-2882 and YARN-5430, but 
they are marked 2.9.0. Is there going to be 2.9.0? If not, then these might not 
matter as 3.0.0 permits backward incompatible changes.

We should have a blocker that addresses YARN-3866 and YARN-4293 for the 2.8.0 
release. We can perhaps repurpose YARN-5184 to address YARN-2882 and YARN-5430 
for the 2.9.0 release. I believe this should not be a blocker for 3.0.0 because 
3.0.0 allows backward-incompatible changes.

> Mark ContainerStatus and NodeReport as evolving
> -----------------------------------------------
>
>                 Key: YARN-5130
>                 URL: https://issues.apache.org/jira/browse/YARN-5130
>             Project: Hadoop YARN
>          Issue Type: Improvement
>          Components: yarn
>    Affects Versions: 2.8.0
>            Reporter: Steve Loughran
>            Assignee: Gergely Novák
>            Priority: Minor
>              Labels: oct16-medium
>         Attachments: YARN-5130.001.patch
>
>
> It turns out that slider won't build as the {{ContainerStatus}} and 
> {{NodeReport}} classes have added more abstract methods, so breaking the mock 
> objects.
> While it is everyone's freedom to change things, these classes are both tagged
> {code}
> @Public
> @Stable
> {code}
> Given they aren't stable, can someone mark them as {{@Evolving}}? That way 
> when downstream code breaks, we can be less disappointed



--
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