From ee205ed7249fe203b6acb2c48b2fb046736e6de9 Mon Sep 17 00:00:00 2001 From: Danny Auble <da@schedmd.com> Date: Thu, 5 Mar 2015 14:06:58 -0800 Subject: [PATCH] Make it so sched_params isn't read over and over when a launch of a job fails addition to commit 2c83bf4e1e830f --- src/slurmd/slurmd/req.c | 17 +++++++++-------- src/slurmd/slurmd/slurmd.c | 2 ++ src/slurmd/slurmd/slurmd.h | 2 ++ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/slurmd/slurmd/req.c b/src/slurmd/slurmd/req.c index b1d9666626f..8405e632284 100644 --- a/src/slurmd/slurmd/req.c +++ b/src/slurmd/slurmd/req.c @@ -1804,15 +1804,16 @@ _launch_job_fail(uint32_t job_id, uint32_t slurm_rc) struct requeue_msg req_msg; slurm_msg_t resp_msg; int rc; - char *sched_params; - char requeue_no_hold; - - requeue_no_hold = false; - sched_params = slurm_get_sched_params(); - if (sched_params) { - if (strstr(sched_params, "nohold_on_prolog_fail")) - requeue_no_hold = true; + static time_t config_update = 0; + static bool requeue_no_hold = false; + + if (config_update != conf->last_update) { + char *sched_params = slurm_get_sched_params(); + requeue_no_hold = (sched_params && strstr( + sched_params, + "nohold_on_prolog_fail")); xfree(sched_params); + config_update = conf->last_update; } slurm_msg_t_init(&resp_msg); diff --git a/src/slurmd/slurmd/slurmd.c b/src/slurmd/slurmd/slurmd.c index a041ecd9671..eac93d1ac3c 100644 --- a/src/slurmd/slurmd/slurmd.c +++ b/src/slurmd/slurmd/slurmd.c @@ -776,6 +776,8 @@ _read_config(void) conf->chos_loc = xstrdup(cf->chos_loc); + conf->last_update = time(NULL); + if (conf->conffile == NULL) conf->conffile = xstrdup(cf->slurm_conf); diff --git a/src/slurmd/slurmd/slurmd.h b/src/slurmd/slurmd/slurmd.h index 1d1b6c4669a..385667d99c9 100644 --- a/src/slurmd/slurmd/slurmd.h +++ b/src/slurmd/slurmd/slurmd.h @@ -107,6 +107,8 @@ typedef struct slurmd_config { uint16_t cr_type; /* Consumable Resource Type: * * CR_SOCKET, CR_CORE, CR_MEMORY, * * CR_DEFAULT, etc. */ + time_t last_update; /* last update time of the + * build parameters */ uint16_t mem_limit_enforce; /* enforce mem limit on running job */ int nice; /* command line nice value spec */ char *node_name; /* node name */ -- GitLab