1
1

Filter multicast messages to avoid cross-job confusion

This commit was SVN r22729.
Этот коммит содержится в:
Ralph Castain 2010-02-28 18:22:56 +00:00
родитель 359dc5cad3
Коммит 96590b9fad

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

@ -842,6 +842,31 @@ static void process_recv(int fd, short event, void *cbdata)
goto cleanup;
}
/* if this message is from a different job family, ignore it unless
* it is on the system channel. We ignore these messages to avoid
* confusion between different jobs since we all may be sharing
* multicast channels. The system channel is left open to support
* cross-job communications via the HNP.
*/
if (ORTE_JOB_FAMILY(name.jobid) != ORTE_JOB_FAMILY(ORTE_PROC_MY_NAME->jobid)) {
/* if the channel is other than the system channel, ignore it */
if (ORTE_RMCAST_SYS_CHANNEL != chan->channel) {
OPAL_OUTPUT_VERBOSE((10, orte_rmcast_base.rmcast_output,
"%s rmcast:udp:recv from a different job family: %s",
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
ORTE_NAME_PRINT(&name)));
goto cleanup;
}
/* if I am other than the HNP, ignore it */
if (!ORTE_PROC_IS_HNP) {
OPAL_OUTPUT_VERBOSE((10, orte_rmcast_base.rmcast_output,
"%s rmcast:udp:recv from a different job family: %s",
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
ORTE_NAME_PRINT(&name)));
goto cleanup;
}
}
/* construct the buffer for unpacking */
OBJ_CONSTRUCT(&buf, opal_buffer_t);