[ 
https://issues.apache.org/jira/browse/YARN-1871?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Wangda Tan updated YARN-1871:
-----------------------------

    Attachment: YARN-1871.demo.patch

Attached a demo patch according to idea #3, (see YARN-1871.demo.patch)
bq. 3. Similar to @AtMostOnce annotation, make the ser-de as a runtime behavior.
The demo patch consists 3 parts,

*1. Changes on record class, (AllocateRequest in this patch)*
Make record class become a non-abstract class, add simple getters/setters 
implementation. 
And we need know that if is a variable set by user or not. So we consider for 
non-primitive fields, null is not set. For primitives, we consider MIN_VALUE is 
not set.

*2. Add a demo implementation (not completed) of serialization a record to 
Proto type using reflection*
See ProtoSerdeUtils.getProto

*3. Changes in *PBClientImpl using our ser-de utils*
See ApplicationMasterProtocolPBClientImpl.allocate

Looking forward your opinions on this!

> We should eliminate writing *PBImpl code in YARN
> ------------------------------------------------
>
>                 Key: YARN-1871
>                 URL: https://issues.apache.org/jira/browse/YARN-1871
>             Project: Hadoop YARN
>          Issue Type: Improvement
>          Components: api
>    Affects Versions: 2.4.0
>            Reporter: Wangda Tan
>            Assignee: Wangda Tan
>         Attachments: YARN-1871.demo.patch
>
>
> Currently, We need write PBImpl classes one by one. After running "find . 
> -name "*PBImpl*.java" | xargs wc -l" under hadoop source code directory, we 
> can see, there're more than 25,000 LOC. I think we should improve this, which 
> will be very helpful for YARN developers to make changes for YARN protocols.
> There're only some limited patterns in current *PBImpl,
> * Simple types, like string, int32, float.
> * List<?> types
> * Map<?> types
> * Enum types
> Code generation should be enough to generate such PBImpl classes.
> Some other requirements are,
> * Leave other related code alone, like service implemention (e.g. 
> ContainerManagerImpl).
> * (If possible) Forward compatibility, developpers can write their own PBImpl 
> or genereate them.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to