Fix comm_spawn. The problem stems from our use of the existence of an attribute as equivalent to a boolean "true" - in other words, we only confirm the existence of an attribute on a list to indicate something as opposed to looking at its specific value. Hence, we create the attribute with a type of ORTE_UNDEF - which is fine...until we then attempt to store/retrieve that attribute from the registry. In that case, the DSS barks because it treats ORTE_UNDEF as an error.
The only place where we attempt to store/retrieve attributes is in the RMAPS framework in support of comm_spawn. So this is where things broke down. The fix was simply to say "if the attribute data type is ORTE_UNDEF, then treat it like a boolean with value true". Trivial fix - solves problem. This commit was SVN r14910.
Этот коммит содержится в:
родитель
b9f8b83442
Коммит
0757467d77
@ -596,6 +596,7 @@ int orte_rmaps_base_store_mapping_plan(orte_jobid_t job, opal_list_t *attr_list)
|
||||
ORTE_RMAPS_BOOKMARK
|
||||
};
|
||||
orte_std_cntr_t num_attrs_defd;
|
||||
bool tval = true;
|
||||
|
||||
OPAL_TRACE(2);
|
||||
|
||||
@ -637,7 +638,7 @@ int orte_rmaps_base_store_mapping_plan(orte_jobid_t job, opal_list_t *attr_list)
|
||||
}
|
||||
} else {
|
||||
if (ORTE_SUCCESS != (rc = orte_gpr.create_keyval(&(value->keyvals[j]), attr->key,
|
||||
ORTE_UNDEF, NULL))) {
|
||||
ORTE_BOOL, &tval))) {
|
||||
ORTE_ERROR_LOG(rc);
|
||||
OBJ_RELEASE(value);
|
||||
return rc;
|
||||
@ -716,24 +717,13 @@ int orte_rmaps_base_get_mapping_plan(orte_jobid_t job, opal_list_t *attr_list)
|
||||
for (i=0; i < value->cnt; i++) {
|
||||
kval = value->keyvals[i];
|
||||
|
||||
if (NULL != kval->value) {
|
||||
if (ORTE_SUCCESS != (rc = orte_rmgr.add_attribute(attr_list, kval->key,
|
||||
kval->value->type,
|
||||
kval->value->data,
|
||||
ORTE_RMGR_ATTR_OVERRIDE))) {
|
||||
ORTE_ERROR_LOG(rc);
|
||||
OBJ_RELEASE(value);
|
||||
return rc;
|
||||
}
|
||||
} else {
|
||||
if (ORTE_SUCCESS != (rc = orte_rmgr.add_attribute(attr_list, kval->key,
|
||||
ORTE_UNDEF,
|
||||
NULL,
|
||||
ORTE_RMGR_ATTR_OVERRIDE))) {
|
||||
ORTE_ERROR_LOG(rc);
|
||||
OBJ_RELEASE(value);
|
||||
return rc;
|
||||
}
|
||||
if (ORTE_SUCCESS != (rc = orte_rmgr.add_attribute(attr_list, kval->key,
|
||||
kval->value->type,
|
||||
kval->value->data,
|
||||
ORTE_RMGR_ATTR_OVERRIDE))) {
|
||||
ORTE_ERROR_LOG(rc);
|
||||
OBJ_RELEASE(value);
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user