diff --git a/NEWS b/NEWS index 687ae9a190acab040fee1e0fc9eda2ff799849fc..50b0b5f764e9ee6e18f9d0dd0ad2fe999781ae85 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,9 @@ documents those changes that are of interest to users and admins. the code) -- Added support for OSX build. +* Changes in SLURM 1.1.5 +======================== + * Changes in SLURM 1.1.4 ======================== -- Improve error handling in hierarchical communications logic. @@ -1762,7 +1765,7 @@ documents those changes that are of interest to users and admins. -- "fatal: _shm_unlock: Numerical result out of range" bug fixed in slurmd. -- Config file parsing is now case insensitive. -- SLURM_NODELIST environment variable now set in allocate mode. - + * Changes in SLURM 0.2.0-pre2 ============================= diff --git a/src/sacct/options.c b/src/sacct/options.c index 629167359306becfe5ad62e45e546d5cb6009c19..5b0b8fbc9b20b6525f94d3c769e7c1010927daf1 100644 --- a/src/sacct/options.c +++ b/src/sacct/options.c @@ -1581,23 +1581,23 @@ void do_fdump(char* f[], int lc) "nvcsw", /* F_VCSW */ "nivcsw", /* F_NIVCSW */ "max_vsize", /* F_MAX_VSIZE */ - "max_vsize_node", /* F_MAX_VSIZE_NODE */ "max_vsize_task", /* F_MAX_VSIZE_TASK */ "ave_vsize", /* F_AVE_VSIZE */ "max_rss", /* F_MAX_RSS */ - "max_rss_node", /* F_MAX_RSS_NODE */ "max_rss_task", /* F_MAX_RSS_TASK */ "ave_rss", /* F_AVE_RSS */ "max_pages", /* F_MAX_PAGES */ - "max_pages_node", /* F_MAX_PAGES_NODE */ "max_pages_task", /* F_MAX_PAGES_TASK */ "ave_pages", /* F_AVE_PAGES */ "min_cputime", /* F_MIN_CPU */ - "min_cputime_node", /* F_MIN_CPU_NODE */ "min_cputime_task", /* F_MIN_CPU_TASK */ "ave_cputime", /* F_AVE_RSS */ "StepName", /* F_STEPNAME */ "StepNodes", /* F_STEPNODES */ + "max_vsize_node", /* F_MAX_VSIZE_NODE */ + "max_rss_node", /* F_MAX_RSS_NODE */ + "max_pages_node", /* F_MAX_PAGES_NODE */ + "min_cputime_node", /* F_MIN_CPU_NODE */ NULL}; char *suspend[] = {"Suspend/Run time", /* F_TOT_ELAPSED */ diff --git a/src/sinfo/opts.c b/src/sinfo/opts.c index a7002ee7f9bcbc35e1be43e289c93178e18deba8..38fb962ba4650ab452ace266c7ffc1a1c24d4960 100644 --- a/src/sinfo/opts.c +++ b/src/sinfo/opts.c @@ -146,6 +146,7 @@ extern void parse_command_line(int argc, char *argv[]) params.long_output = true; break; case (int) 'n': + xfree(params.nodes); params.nodes= xstrdup(optarg); /* * confirm valid nodelist entry @@ -162,6 +163,7 @@ extern void parse_command_line(int argc, char *argv[]) params.node_flag = true; break; case (int) 'o': + xfree(params.format); params.format = xstrdup(optarg); break; case (int) 'p': @@ -182,6 +184,7 @@ extern void parse_command_line(int argc, char *argv[]) params.sort = xstrdup(optarg); break; case (int) 't': + xfree(params.states); params.states = xstrdup(optarg); if (!(params.state_list = _build_state_list(optarg))) { error ("valid states: %s", _node_state_list ()); diff --git a/src/squeue/opts.c b/src/squeue/opts.c index e043086b5a5026a498db01343c40482e306f0a16..0ec463c8cf40ab43dd8300a524d1c0efffc6183a 100644 --- a/src/squeue/opts.c +++ b/src/squeue/opts.c @@ -81,6 +81,7 @@ parse_command_line( int argc, char* argv[] ) char *env_val = NULL; int opt_char; int option_index; + hostlist_t host_list; static struct option long_options[] = { {"all", no_argument, 0, 'a'}, {"noheader", no_argument, 0, 'h'}, @@ -144,12 +145,20 @@ parse_command_line( int argc, char* argv[] ) case (int) 'n': xfree(params.node); params.node = xstrdup(optarg); + host_list = hostlist_create(params.node); + if (!host_list) { + error("'%s' invalid entry for --node", + optarg); + exit(1); + } + hostlist_destroy(host_list); break; case (int) 'o': xfree(params.format); params.format = xstrdup(optarg); break; case (int) 'p': + xfree(params.partitions); params.partitions = xstrdup(optarg); params.part_list = _build_part_list( params.partitions ); @@ -167,11 +176,13 @@ parse_command_line( int argc, char* argv[] ) params.sort = xstrdup(optarg); break; case (int) 't': + xfree(params.states); params.states = xstrdup(optarg); params.state_list = _build_state_list( params.states ); break; case (int) 'u': + xfree(params.users); params.users = xstrdup(optarg); params.user_list = _build_user_list( params.users ); diff --git a/src/srun/allocate.c b/src/srun/allocate.c index 380997a270c186ac95fd699671c11c12436b209d..a6806cc44177b5890f773d00fce7e21f7d6f48cc 100644 --- a/src/srun/allocate.c +++ b/src/srun/allocate.c @@ -334,6 +334,7 @@ _handle_msg(slurm_msg_t *msg, resource_allocation_response_msg_t **resp) uid_t uid = getuid(); uid_t slurm_uid = (uid_t) slurm_get_slurm_user_id(); int rc = 0; + srun_timeout_msg_t *to; if ((req_uid != slurm_uid) && (req_uid != 0) && (req_uid != uid)) { error ("Security violation, slurm message from uid %u", @@ -353,6 +354,13 @@ _handle_msg(slurm_msg_t *msg, resource_allocation_response_msg_t **resp) *resp = msg->data; rc = 1; break; + case SRUN_TIMEOUT: + debug2("timeout received"); + to = msg->data; + timeout_handler(to->timeout); + slurm_send_rc_msg(msg, SLURM_SUCCESS); + slurm_free_srun_timeout_msg(msg->data); + break; default: error("received spurious message type: %d\n", msg->msg_type); diff --git a/src/srun/msg.c b/src/srun/msg.c index 7caaa82f2bd84b6a1e4ab75298f6757436a5321c..2a6ace6fc46530c0ddf39813349915db9b0873d0 100644 --- a/src/srun/msg.c +++ b/src/srun/msg.c @@ -91,7 +91,6 @@ static void _msg_thr_poll(srun_job_t *job); static void _set_jfds_nonblocking(srun_job_t *job); static void _print_pid_list(const char *host, int ntasks, uint32_t *pid, char *executable_name); -static void _timeout_handler(time_t timeout); static void _node_fail_handler(char *nodelist, srun_job_t *job); #define _poll_set_rd(_pfd, _fd) do { \ @@ -324,7 +323,7 @@ rwfail: * FIXME: How much lead time do we want for this message? Some jobs may * require tens of minutes to gracefully terminate. */ -static void _timeout_handler(time_t timeout) +void timeout_handler(time_t timeout) { static time_t last_timeout = 0; @@ -840,7 +839,7 @@ _handle_msg(srun_job_t *job, slurm_msg_t *msg) case SRUN_TIMEOUT: verbose("timeout received"); to = msg->data; - _timeout_handler(to->timeout); + timeout_handler(to->timeout); slurm_send_rc_msg(msg, SLURM_SUCCESS); slurm_free_srun_timeout_msg(msg->data); break; diff --git a/src/srun/msg.h b/src/srun/msg.h index 832e2c29d2cdf4c7408bd078f892c5c8ff144150..4cd2661cd97ada36fee2bf66f8e25c7ed8f3f774 100644 --- a/src/srun/msg.h +++ b/src/srun/msg.h @@ -33,6 +33,7 @@ void *msg_thr(void *arg); int msg_thr_create(srun_job_t *job); slurm_fd slurmctld_msg_init(void); +void timeout_handler(time_t timeout); typedef struct slurmctld_communication_addr { char *hostname;