Move the reissuing of the daemon recv to occur after the message actually gets processed. This ensures that we don't get multiple messages trying to be processed at the same time.
Add one more debug output to see where messages are heading This commit was SVN r18183.
Этот коммит содержится в:
родитель
66e532669a
Коммит
eb27e4f23d
@ -174,8 +174,6 @@ void orte_daemon_recv(int status, orte_process_name_t* sender,
|
||||
opal_buffer_t *buffer, orte_rml_tag_t tag,
|
||||
void* cbdata)
|
||||
{
|
||||
int ret;
|
||||
|
||||
OPAL_OUTPUT_VERBOSE((1, orte_debug_output,
|
||||
"%s orted_recv_cmd: received message from %s",
|
||||
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
||||
@ -192,13 +190,6 @@ void orte_daemon_recv(int status, orte_process_name_t* sender,
|
||||
*/
|
||||
ORTE_MESSAGE_EVENT(sender, buffer, tag, orte_daemon_cmd_processor);
|
||||
|
||||
/* reissue the non-blocking receive */
|
||||
ret = orte_rml.recv_buffer_nb(ORTE_NAME_WILDCARD, ORTE_RML_TAG_DAEMON,
|
||||
ORTE_RML_NON_PERSISTENT, orte_daemon_recv, NULL);
|
||||
if (ret != ORTE_SUCCESS && ret != ORTE_ERR_NOT_IMPLEMENTED) {
|
||||
ORTE_ERROR_LOG(ret);
|
||||
}
|
||||
|
||||
OPAL_OUTPUT_VERBOSE((1, orte_debug_output,
|
||||
"%s orted_recv_cmd: reissued recv",
|
||||
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME)));
|
||||
@ -289,6 +280,13 @@ PROCESS:
|
||||
|
||||
CLEANUP:
|
||||
OBJ_RELEASE(mev);
|
||||
/* reissue the non-blocking receive */
|
||||
ret = orte_rml.recv_buffer_nb(ORTE_NAME_WILDCARD, ORTE_RML_TAG_DAEMON,
|
||||
ORTE_RML_NON_PERSISTENT, orte_daemon_recv, NULL);
|
||||
if (ret != ORTE_SUCCESS && ret != ORTE_ERR_NOT_IMPLEMENTED) {
|
||||
ORTE_ERROR_LOG(ret);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -417,6 +415,11 @@ static int process_commands(orte_process_name_t* sender,
|
||||
goto CLEANUP;
|
||||
}
|
||||
|
||||
OPAL_OUTPUT_VERBOSE((1, orte_debug_output,
|
||||
"%s orted:comm:message_local_procs delivering message to job %s tag %d",
|
||||
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
||||
ORTE_JOBID_PRINT(job), (int)target_tag));
|
||||
|
||||
relay_msg = OBJ_NEW(opal_buffer_t);
|
||||
opal_dss.copy_payload(relay_msg, buffer);
|
||||
|
||||
|
Загрузка…
Ссылка в новой задаче
Block a user