diff --git a/src/common/slurm_protocol_defs.h b/src/common/slurm_protocol_defs.h index e507fba8d43553b480af0868298ecf81a58e3381..108b3b1a59daf49a2906ac3ab3fadb917859d54f 100644 --- a/src/common/slurm_protocol_defs.h +++ b/src/common/slurm_protocol_defs.h @@ -909,6 +909,9 @@ typedef struct kill_job_msg { dynamic_plugin_data_t *select_jobinfo; /* opaque data type */ char **spank_job_env; uint32_t spank_job_env_size; + char **pelog_env; /* jobpack environment variables for job + prolog/epilog */ + uint32_t pelog_env_size;/* element count in pelog_env */ } kill_job_msg_t; typedef struct signal_job_msg { diff --git a/src/common/slurm_protocol_pack.c b/src/common/slurm_protocol_pack.c index c7a8f2b3e943a75743d7702bb6559e4f881ad602..e9741b62af3810a822bf75111cf0c7097c8be18b 100644 --- a/src/common/slurm_protocol_pack.c +++ b/src/common/slurm_protocol_pack.c @@ -5038,7 +5038,21 @@ _pack_kill_job_msg(kill_job_msg_t * msg, Buf buffer, uint16_t protocol_version) { xassert(msg != NULL); - if (protocol_version >= SLURM_MIN_PROTOCOL_VERSION) { + if (protocol_version >= SLURM_17_02_PROTOCOL_VERSION) { + pack32(msg->job_id, buffer); + pack32(msg->step_id, buffer); + pack32(msg->job_state, buffer); + pack32(msg->job_uid, buffer); + pack_time(msg->time, buffer); + pack_time(msg->start_time, buffer); + packstr(msg->nodes, buffer); + select_g_select_jobinfo_pack(msg->select_jobinfo, buffer, + protocol_version); + packstr_array(msg->spank_job_env, msg->spank_job_env_size, + buffer); + packstr_array(msg->pelog_env, msg->pelog_env_size, + buffer); + } else if (protocol_version >= SLURM_MIN_PROTOCOL_VERSION) { pack32(msg->job_id, buffer); pack32(msg->step_id, buffer); pack32(msg->job_state, buffer); @@ -5068,7 +5082,22 @@ _unpack_kill_job_msg(kill_job_msg_t ** msg, Buf buffer, tmp_ptr = xmalloc(sizeof(kill_job_msg_t)); *msg = tmp_ptr; - if (protocol_version >= SLURM_MIN_PROTOCOL_VERSION) { + if (protocol_version >= SLURM_17_02_PROTOCOL_VERSION) { + safe_unpack32(&(tmp_ptr->job_id), buffer); + safe_unpack32(&(tmp_ptr->step_id), buffer); + safe_unpack32(&(tmp_ptr->job_state), buffer); + safe_unpack32(&(tmp_ptr->job_uid), buffer); + safe_unpack_time(&(tmp_ptr->time), buffer); + safe_unpack_time(&(tmp_ptr->start_time), buffer); + safe_unpackstr_xmalloc(&(tmp_ptr->nodes), &uint32_tmp, buffer); + if (select_g_select_jobinfo_unpack(&tmp_ptr->select_jobinfo, + buffer, protocol_version)) + goto unpack_error; + safe_unpackstr_array(&(tmp_ptr->spank_job_env), + &tmp_ptr->spank_job_env_size, buffer); + safe_unpackstr_array(&(tmp_ptr->pelog_env), + &tmp_ptr->pelog_env_size, buffer); + } else if (protocol_version >= SLURM_MIN_PROTOCOL_VERSION) { safe_unpack32(&(tmp_ptr->job_id), buffer); safe_unpack32(&(tmp_ptr->step_id), buffer); safe_unpack32(&(tmp_ptr->job_state), buffer);