Ensure that wildcard recvs go to the end of the matching list so that recvs for specific tags take precedence.
Ensure we don't try to send tcp mcast messsages to procs that haven't reported back yet This commit was SVN r23491.
Этот коммит содержится в:
родитель
95a908cb27
Коммит
140e427a79
@ -194,7 +194,15 @@ int orte_rmcast_base_queue_recv(rmcast_base_recv_t **recvptr,
|
||||
if (NULL != recvptr) {
|
||||
*recvptr = rptr;
|
||||
}
|
||||
opal_list_append(&orte_rmcast_base.recvs, &rptr->item);
|
||||
|
||||
/* wildcard tag recvs get pushed to the end of the list so
|
||||
* that specific tag recvs take precedence
|
||||
*/
|
||||
if (ORTE_RMCAST_TAG_WILDCARD == tag) {
|
||||
opal_list_append(&orte_rmcast_base.recvs, &rptr->item);
|
||||
} else {
|
||||
opal_list_prepend(&orte_rmcast_base.recvs, &rptr->item);
|
||||
}
|
||||
OPAL_THREAD_UNLOCK(&orte_rmcast_base.lock);
|
||||
|
||||
return ORTE_SUCCESS;
|
||||
|
@ -356,6 +356,10 @@ process:
|
||||
if (NULL == (proc = (orte_proc_t*)opal_pointer_array_get_item(daemons->procs, v))) {
|
||||
continue;
|
||||
}
|
||||
if (NULL == proc->rml_uri) {
|
||||
/* not ready yet - don't know contact info */
|
||||
continue;
|
||||
}
|
||||
if (0 > (rc = orte_rml.send_buffer(&proc->name, buf, ORTE_RML_TAG_MULTICAST, 0))) {
|
||||
ORTE_ERROR_LOG(rc);
|
||||
goto cleanup;
|
||||
@ -366,6 +370,10 @@ process:
|
||||
item != opal_list_get_end(&orte_local_children);
|
||||
item = opal_list_get_next(item)) {
|
||||
child = (orte_odls_child_t*)item;
|
||||
if (NULL == child->rml_uri) {
|
||||
/* race condition - hasn't reported in yet */
|
||||
continue;
|
||||
}
|
||||
if (0 > (rc = orte_rml.send_buffer(child->name, buf, ORTE_RML_TAG_MULTICAST, 0))) {
|
||||
ORTE_ERROR_LOG(rc);
|
||||
goto cleanup;
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user