Skip to content
Snippets Groups Projects
Commit 01b99ccb authored by tewk's avatar tewk
Browse files

Kills all tasks on signaled shutdown

parent 9a6fb06f
No related branches found
No related tags found
No related merge requests found
...@@ -551,6 +551,8 @@ int slurmd_shutdown () ...@@ -551,6 +551,8 @@ int slurmd_shutdown ()
return_code_msg_t * slurm_rc_msg ; return_code_msg_t * slurm_rc_msg ;
slurm_addr slurmd_addr ; slurm_addr slurmd_addr ;
kill_all_tasks ( ) ;
/* init message connection for message communication with controller */ /* init message connection for message communication with controller */
slurm_set_addr_char ( & slurmd_addr , slurm_get_slurmd_port ( ) , "localhost" ) ; slurm_set_addr_char ( & slurmd_addr , slurm_get_slurmd_port ( ) , "localhost" ) ;
......
...@@ -238,6 +238,33 @@ int kill_tasks ( kill_tasks_msg_t * kill_task_msg ) ...@@ -238,6 +238,33 @@ int kill_tasks ( kill_tasks_msg_t * kill_task_msg )
return error_code ; return error_code ;
} }
int kill_all_tasks ( )
{
int error_code = SLURM_SUCCESS ;
/* get shmemptr */
slurmd_shmem_t * shmem = get_shmem ( ) ;
int i ;
pthread_mutex_lock ( & shmem -> mutex ) ;
for ( i=0 ; i < MAX_JOB_STEPS ; i ++ )
{
if (shmem -> job_steps[i].used == true )
{
/* cycle through job_step and kill tasks*/
task_t * task_ptr = shmem -> job_steps[i] . head_task ;
while ( task_ptr != NULL )
{
kill_task ( task_ptr , SIGKILL ) ;
task_ptr = task_ptr -> next ;
}
}
}
pthread_mutex_unlock ( & shmem -> mutex ) ;
return SLURM_SUCCESS ;
}
int kill_task ( task_t * task , int signal ) int kill_task ( task_t * task , int signal )
{ {
return kill ( task -> task_start . exec_pid , signal ) ; return kill ( task -> task_start . exec_pid , signal ) ;
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
/* function prototypes */ /* function prototypes */
int launch_tasks ( launch_tasks_request_msg_t * launch_msg ) ; int launch_tasks ( launch_tasks_request_msg_t * launch_msg ) ;
int kill_tasks ( kill_tasks_msg_t * kill_task_msg ) ; int kill_tasks ( kill_tasks_msg_t * kill_task_msg ) ;
int kill_all_tasks ( ) ;
int reattach_tasks_streams ( reattach_tasks_streams_msg_t * req_msg ) ; int reattach_tasks_streams ( reattach_tasks_streams_msg_t * req_msg ) ;
typedef struct task_start typedef struct task_start
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment