diff --git a/src/slurmctld/agent.c b/src/slurmctld/agent.c index 9b873260d0ea58369d40fc58d5cb0608db1a4858..e0e0f113854f8970316502fe0fd77b0642bdb4cb 100644 --- a/src/slurmctld/agent.c +++ b/src/slurmctld/agent.c @@ -120,8 +120,7 @@ agent (void *args) goto cleanup; if (agent_arg_ptr->slurm_addr == NULL) error ("agent passed null address list"); - if ((agent_arg_ptr->msg_type != REQUEST_REVOKE_JOB_CREDENTIAL) && - (agent_arg_ptr->msg_type != REQUEST_SHUTDOWN_IMMEDIATE)) + if (agent_arg_ptr->msg_type != REQUEST_REVOKE_JOB_CREDENTIAL) fatal ("agent passed invaid message type %d", agent_arg_ptr->msg_type); /* initialize the data structures */ diff --git a/src/slurmctld/controller.c b/src/slurmctld/controller.c index 5c3b6293177e339b6da717eb88754a7e743e486a..1145d5a73f29bb0425983e12174984f7b4512b1e 100644 --- a/src/slurmctld/controller.c +++ b/src/slurmctld/controller.c @@ -99,7 +99,7 @@ inline static void slurm_rpc_job_step_get_info ( slurm_msg_t * msg ) ; inline static void slurm_rpc_job_will_run ( slurm_msg_t * msg ) ; inline static void slurm_rpc_node_registration ( slurm_msg_t * msg ) ; inline static void slurm_rpc_reconfigure_controller ( slurm_msg_t * msg ) ; -inline static void slurm_rpc_shutdown_controller ( slurm_msg_t * msg ); +inline static void slurm_rpc_shutdown_controller ( slurm_msg_t * msg, int response ); inline static void slurm_rpc_submit_batch_job ( slurm_msg_t * msg ) ; inline static void slurm_rpc_update_job ( slurm_msg_t * msg ) ; inline static void slurm_rpc_update_node ( slurm_msg_t * msg ) ; @@ -514,8 +514,10 @@ slurmctld_req ( slurm_msg_t * msg ) slurm_rpc_reconfigure_controller ( msg ) ; break; case REQUEST_SHUTDOWN: + slurm_rpc_shutdown_controller ( msg , 1 ) ; + break; case REQUEST_SHUTDOWN_IMMEDIATE: - slurm_rpc_shutdown_controller ( msg ) ; + slurm_rpc_shutdown_controller ( msg , 0 ) ; break; case REQUEST_UPDATE_JOB: slurm_rpc_update_job ( msg ) ; @@ -1175,7 +1177,7 @@ slurm_rpc_reconfigure_controller ( slurm_msg_t * msg ) /* slurm_rpc_shutdown_controller - process RPC to shutdown slurmctld */ void -slurm_rpc_shutdown_controller ( slurm_msg_t * msg ) +slurm_rpc_shutdown_controller ( slurm_msg_t * msg, int response ) { /* do RPC call */ /* must be user root */ @@ -1186,8 +1188,9 @@ slurm_rpc_shutdown_controller ( slurm_msg_t * msg ) info ("slurm_rpc_shutdown_controller completed successfully"); } - /* return result */ - slurm_send_rc_msg ( msg , SLURM_SUCCESS ); + if (response) { + slurm_send_rc_msg ( msg , SLURM_SUCCESS ); + } } @@ -1282,12 +1285,9 @@ slurm_rpc_node_registration ( slurm_msg_t * msg ) int slurm_shutdown () { - int msg_size ; int rc ; slurm_fd sockfd ; slurm_msg_t request_msg ; - slurm_msg_t response_msg ; - return_code_msg_t * slurm_rc_msg ; /* init message connection for message communication with controller */ if ( ( sockfd = slurm_open_controller_conn ( ) ) == SLURM_SOCKET_ERROR ) { @@ -1303,36 +1303,13 @@ slurm_shutdown () return SLURM_SOCKET_ERROR ; } - /* receive message */ - if ( ( msg_size = slurm_receive_msg ( sockfd , & response_msg ) ) == SLURM_SOCKET_ERROR ) { - error ("slurm_receive_msg error"); - return SLURM_SOCKET_ERROR ; - } + /* no response */ /* shutdown message connection */ if ( ( rc = slurm_shutdown_msg_conn ( sockfd ) ) == SLURM_SOCKET_ERROR ) { error ("slurm_shutdown_msg_conn error"); return SLURM_SOCKET_ERROR ; } - if ( msg_size ) - return msg_size; - - switch ( response_msg . msg_type ) - { - case RESPONSE_SLURM_RC: - slurm_rc_msg = ( return_code_msg_t * ) response_msg . data ; - rc = slurm_rc_msg->return_code; - slurm_free_return_code_msg ( slurm_rc_msg ); - if (rc) { - error ("slurm_shutdown_msg_conn error (%d)", rc); - return SLURM_PROTOCOL_ERROR; - } - break ; - default: - error ("slurm_shutdown_msg_conn type bad (%d)", response_msg . msg_type); - return SLURM_UNEXPECTED_MSG_ERROR; - break ; - } return SLURM_PROTOCOL_SUCCESS ; }