1
1

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.
Этот коммит содержится в:
Ralph Castain 2010-07-23 19:31:34 +00:00
родитель 95a908cb27
Коммит 140e427a79
2 изменённых файлов: 17 добавлений и 1 удалений

Просмотреть файл

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