We actually have a number of modules that are allowed to terminate daemons, so 
it really isn't that big a deal. However, I can agree that this code is 
unnecessary so long as any code that calls route_lost remembers to also check 
for daemon termination conditions. I -think- that's the case today, but will 
check and correct if necessary.

I'll remove this when I revisit the termination issue in general.

On Oct 11, 2011, at 11:25 AM, George Bosilca wrote:

> The second part of this patch is fascinating. Why would a routed be allowed 
> to terminate a daemon? And why such discrimination (in the sense that they 
> are not allowed to shortcut to orte_quit) against all our routed ?
> 
>  Thanks,
>    george.
> 
> Begin forwarded message:
> 
>> Modified: trunk/orte/mca/routed/binomial/routed_binomial.c
>> ==============================================================================
>> --- trunk/orte/mca/routed/binomial/routed_binomial.c (original)
>> +++ trunk/orte/mca/routed/binomial/routed_binomial.c 2011-10-10 17:41:49 EDT 
>> (Mon, 10 Oct 2011)
>> @@ -32,6 +32,7 @@
>> #include "orte/util/nidmap.h"
>> #include "orte/runtime/orte_globals.h"
>> #include "orte/runtime/orte_wait.h"
>> +#include "orte/runtime/orte_quit.h"
>> #include "orte/runtime/runtime.h"
>> #include "orte/runtime/data_type_support/orte_dt_support.h"
>> 
>> @@ -830,11 +831,22 @@
>>             item = opal_list_get_next(item)) {
>>            child = (orte_routed_tree_t*)item;
>>            if (child->vpid == route->vpid) {
>> +                OPAL_OUTPUT_VERBOSE((4, orte_routed_base_output,
>> +                                     "%s routed_binomial: removing route to 
>> child daemon %s",
>> +                                     ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
>> +                                     ORTE_NAME_PRINT(route)));
>>                opal_list_remove_item(&my_children, item);
>>                OBJ_RELEASE(item);
>>                return ORTE_SUCCESS;
>>            }
>>        }
>> +        /* if we are the HNP or daemon, AND we are terminating,
>> +         * then we want to finalize if all our child daemons
>> +         * have left
>> +         */
>> +        if (orte_terminating && 0 == opal_list_get_size(&my_children)) {
>> +            orte_quit();
>> +        }
>>    }
>> 
>>    /* we don't care about this one, so return success */
> 
> 
> _______________________________________________
> devel mailing list
> de...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/devel


Reply via email to