In addition to r16513, this commit fixes trac:1170.
If we cannot resolve the route to the peer that we're trying to send to, don't queue up the message in the TCP OOB -- instead, return it to the upper layer (e.g., the RML) and let it decide what to do. In the case of the routed RML, the tree component will queue it up for later transmission. Hence, we don't want the message queued up both here in the TCP OOB and the tree routed. Also see some more discussion / explanation in #1171. This commit was SVN r16540. The following SVN revision numbers were found above: r16513 --> open-mpi/ompi@7ae9589d70 The following Trac tickets were found above: Ticket 1170 --> https://svn.open-mpi.org/trac/ompi/ticket/1170
Этот коммит содержится в:
родитель
63dde87076
Коммит
5637c7a5a0
@ -163,12 +163,25 @@ int mca_oob_tcp_peer_send(mca_oob_tcp_peer_t* peer, mca_oob_tcp_msg_t* msg)
|
||||
/*
|
||||
* queue the message and attempt to resolve the peer address
|
||||
*/
|
||||
opal_list_append(&peer->peer_send_queue, (opal_list_item_t*)msg);
|
||||
if(peer->peer_state == MCA_OOB_TCP_CLOSED) {
|
||||
peer->peer_state = MCA_OOB_TCP_RESOLVE;
|
||||
|
||||
/* Only queue up the message if we known who the peer is.
|
||||
If we don't, return the error and let the upper layer
|
||||
figure out what to do. Cannot hold the peer_lock when
|
||||
we call resolve(), but we do need to hold it when/if we
|
||||
append to the peer_send_queue. */
|
||||
OPAL_THREAD_UNLOCK(&peer->peer_lock);
|
||||
return mca_oob_tcp_resolve(peer);
|
||||
rc = mca_oob_tcp_resolve(peer);
|
||||
if (ORTE_ERR_ADDRESSEE_UNKNOWN != rc) {
|
||||
OPAL_THREAD_LOCK(&peer->peer_lock);
|
||||
opal_list_append(&peer->peer_send_queue,
|
||||
(opal_list_item_t*)msg);
|
||||
OPAL_THREAD_UNLOCK(&peer->peer_lock);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
opal_list_append(&peer->peer_send_queue, (opal_list_item_t*)msg);
|
||||
break;
|
||||
case MCA_OOB_TCP_FAILED:
|
||||
rc = ORTE_ERR_UNREACH;
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user