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

Karthik Kambatla commented on YARN-1098:
----------------------------------------

Thanks Bikas. 

bq. I dont think Alejandro meant wrapping ResourceManager inside an outer 
class. I think he means define that class separately instead of defining it 
within the scope of the ResourceManager class. ResourceManager class is still 
top-level and uses the new class as a member object.

True. My understanding of what Alejandro suggested is: Have ResourceManager as 
is. Move ActiveServices from being an inner class of RM to a class by itself, 
say {{RMActiveServices}}. The RM will have a member object RMActiveServices 
activeServices.

bq. 1) Maintain the ActiveServices as an inner class so that it has direct 
access to all members and methods of ResourceManager. This is same as your 
suggestion above in response to Alejandro's comments.
2) Move the entire code from ResourceManager.serviceInit/Start/Stop() to 
ActiveServices.serviceInit()/Start/Stop(). Have 
ResourceManager.serviceInit/Start/Stop() simply call 
activeService.serviceInit/Start()/Stop(). This is a cosmetic code refactor 
suggestion that I think will significantly reduce the size of this patch.

While this is definitely an improvement over my earlier patch using anonymous 
classes, the RM services (AdminService, ClientRMService etc.) will be fields in 
the ResourceManager and not ActiveServices. Are we okay with this 
not-entirely-idle approach?

bq. I did not understand why setRMStateStore method needed to be changed in the 
first place?
IIRC, one of the tests was overriding this method and hence it had to be a part 
of RM and not ActiveServices.
                
> Separate out RM services into "Always On" and "Active"
> ------------------------------------------------------
>
>                 Key: YARN-1098
>                 URL: https://issues.apache.org/jira/browse/YARN-1098
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>          Components: resourcemanager
>    Affects Versions: 2.1.0-beta
>            Reporter: Karthik Kambatla
>            Assignee: Karthik Kambatla
>              Labels: ha
>         Attachments: yarn-1098-1.patch, yarn-1098-2.patch, 
> yarn-1098-approach.patch, yarn-1098-approach.patch
>
>
> From discussion on YARN-1027, it makes sense to separate out services that 
> are stateful and stateless. The stateless services can  run perennially 
> irrespective of whether the RM is in Active/Standby state, while the stateful 
> services need to  be started on transitionToActive() and completely shutdown 
> on transitionToStandby().
> The external-facing stateless services should respond to the client/AM/NM 
> requests depending on whether the RM is Active/Standby.

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