You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-issues@hadoop.apache.org by "Karthik Kambatla (JIRA)" <ji...@apache.org> on 2014/01/29 22:52:10 UTC

[jira] [Commented] (HADOOP-10085) CompositeService should allow adding services while being inited

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

Karthik Kambatla commented on HADOOP-10085:
-------------------------------------------

Sorry for the delay in getting around to this. Looks like the patch doesn't apply anymore - was hard to see the changes to tests themselves, mind refreshing the patch? I ll try to review before it goes stale this time. 

Let me make sure I understand the fix here. Without the fix, adding a child service to a CompositeService while the CompositeService is initing all its child services leads to ConcurrentModificationException. The patch allows adding these services even during this time, but the newly added child service will never be inited if it not already. So, the patch allows adding services but places the onus on the caller to make sure it is in the correct state; otherwise, bad things can happen. 

I am not sure if it is better to have deterministic behavior where we force users to add all the services before CompositeService#serviceInit is called or to allow adding services but leave the onus on the users. 

It would have been nicer to have a check for the child being in at least the parent's state. Would it make sense to have the parent service enter INIT only after all its child services have been INITed? That way, if the parent is already in INIT, we can disallow adding a service in UNINITED state. Also, the current usage pattern of adding services followed by a call to super.serviceInit() will remain valid? 

> CompositeService should allow adding services while being inited
> ----------------------------------------------------------------
>
>                 Key: HADOOP-10085
>                 URL: https://issues.apache.org/jira/browse/HADOOP-10085
>             Project: Hadoop Common
>          Issue Type: Improvement
>    Affects Versions: 2.2.0
>            Reporter: Karthik Kambatla
>            Assignee: Steve Loughran
>         Attachments: HADOOP-10085-002.patch, HADOOP-10085-003.patch
>
>
> We can add services to a CompositeService. However, if we do that while initing the CompositeService, it leads to a ConcurrentModificationException.
> It would be nice to allow adding services even during the init of CompositeService.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)