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

Robert Joseph Evans commented on YARN-528:
------------------------------------------

The approach seems OK to me, but I would rather have the impl be an even 
thinner wrapper.

{code}
  private ApplicationIdProto proto = null;
  private ApplicationIdProto.Builder builder = null;

  ApplicationIdPBImpl(ApplicationIdProto proto) {
    this.proto = proto;
  }

  public ApplicationIdPBImpl() {
    this.builder = ApplicationIdProto.newBuilder();
  }
 
  public ApplicationIdProto getProto() {
    assert (proto != null);
    return proto;
  }
 
  @Override
  public int getId() {
    assert (proto != null);
    return proto.getId();
  }
 
  @Override
  protected void setId(int id) {
    assert (builder != null);
    builder.setId((id));
  }

  @Override
  public long getClusterTimestamp() {
    assert(proto != null);
    return proto.getClusterTimestamp();
  }
 
  @Override
  protected void setClusterTimestamp(long clusterTimestamp) {
    assert(builder != null);
    builder.setClusterTimestamp((clusterTimestamp));
  }

  @Override
  protected void build() {
    assert(builder != null);
    proto = builder.build();
    builder = null;
  }
{code}
                
> Make IDs read only
> ------------------
>
>                 Key: YARN-528
>                 URL: https://issues.apache.org/jira/browse/YARN-528
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>            Reporter: Robert Joseph Evans
>            Assignee: Robert Joseph Evans
>         Attachments: y528_AppIdPart_01_Refactor.txt, 
> y528_AppIdPart_02_AppIdChanges.txt, y528_AppIdPart_03_fixUsage.txt, 
> y528_ApplicationIdComplete_WIP.txt, YARN-528.txt, YARN-528.txt
>
>
> I really would like to rip out most if not all of the abstraction layer that 
> sits in-between Protocol Buffers, the RPC, and the actual user code.  We have 
> no plans to support any other serialization type, and the abstraction layer 
> just, makes it more difficult to change protocols, makes changing them more 
> error prone, and slows down the objects themselves.  
> Completely doing that is a lot of work.  This JIRA is a first step towards 
> that.  It makes the various ID objects immutable.  If this patch is wel 
> received I will try to go through other objects/classes of objects and update 
> them in a similar way.
> This is probably the last time we will be able to make a change like this 
> before 2.0 stabilizes and YARN APIs will not be able to be changed.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to