From 2e117ff6c0e185f533bca10c38427d637e7d0dda Mon Sep 17 00:00:00 2001 From: Danny Auble <da@llnl.gov> Date: Tue, 23 Mar 2010 19:12:55 +0000 Subject: [PATCH] added ability for a 0 time period with purging --- src/common/slurmdb_defs.c | 29 +- src/common/slurmdb_pack.c | 36 ++- .../mysql/as_mysql_archive.c | 274 ++++++------------ .../mysql/as_mysql_rollup.c | 8 + src/sacctmgr/archive_functions.c | 21 +- src/slurmdbd/read_config.c | 44 ++- 6 files changed, 183 insertions(+), 229 deletions(-) diff --git a/src/common/slurmdb_defs.c b/src/common/slurmdb_defs.c index 97aea0b807d..a01066c206b 100644 --- a/src/common/slurmdb_defs.c +++ b/src/common/slurmdb_defs.c @@ -1483,31 +1483,32 @@ extern int slurmdb_report_set_start_end_time(time_t *start, time_t *end) extern uint32_t slurmdb_parse_purge(char *string) { int i = 0; - uint32_t purge = 0; + uint32_t purge = NO_VAL; xassert(string); while(string[i]) { if ((string[i] >= '0') && (string[i] <= '9')) { + if(purge == NO_VAL) + purge = 0; purge = (purge * 10) + (string[i] - '0'); } else break; i++; } - if (purge) { - switch(string[i]) { - case 'd': - case 'D': - purge = purge | SLURMDB_PURGE_DAYS; - break; - case 'h': - case 'H': - purge = purge | SLURMDB_PURGE_HOURS; - break; - default: - purge = purge | SLURMDB_PURGE_MONTHS; - break; + if (purge != NO_VAL) { + int len = strlen(string+i); + if(!len || !strncasecmp("months", string+i, MAX(len, 1))) { + purge |= SLURMDB_PURGE_MONTHS; + } else if(!strncasecmp("hours", string+i, MAX(len, 1))) { + purge |= SLURMDB_PURGE_HOURS; + } else if(!strncasecmp("days", string+i, MAX(len, 1))) { + purge |= SLURMDB_PURGE_DAYS; + } else { + error("Invalid purge unit '%s', valid options " + "are hours, days, or months", string+i); + purge = NO_VAL; } } else error("Invalid purge string '%s'", string); diff --git a/src/common/slurmdb_pack.c b/src/common/slurmdb_pack.c index 2c31c70fa56..593b6f39bb7 100644 --- a/src/common/slurmdb_pack.c +++ b/src/common/slurmdb_pack.c @@ -3556,10 +3556,10 @@ extern void slurmdb_pack_archive_cond(void *in, uint16_t rpc_version, packnull(buffer); packnull(buffer); slurmdb_pack_job_cond(NULL, rpc_version, buffer); - pack32((uint16_t)0, buffer); - pack32((uint16_t)0, buffer); - pack32((uint16_t)0, buffer); - pack32((uint16_t)0, buffer); + pack32((uint16_t)NO_VAL, buffer); + pack32((uint16_t)NO_VAL, buffer); + pack32((uint16_t)NO_VAL, buffer); + pack32((uint16_t)NO_VAL, buffer); return; } @@ -3579,19 +3579,23 @@ extern void slurmdb_pack_archive_cond(void *in, uint16_t rpc_version, pack16((uint16_t)0, buffer); pack16((uint16_t)0, buffer); slurmdb_pack_job_cond(NULL, rpc_version, buffer); - pack16((uint16_t)0, buffer); - pack16((uint16_t)0, buffer); - pack16((uint16_t)0, buffer); - pack16((uint16_t)0, buffer); + pack16((uint16_t)NO_VAL, buffer); + pack16((uint16_t)NO_VAL, buffer); + pack16((uint16_t)NO_VAL, buffer); + pack16((uint16_t)NO_VAL, buffer); return; } packstr(object->archive_dir, buffer); - pack16(0, buffer); - pack16(0, buffer); + pack16((uint16_t)SLURMDB_PURGE_ARCHIVE_SET( + object->purge_event) ? 1 : 0, buffer); + pack16((uint16_t)SLURMDB_PURGE_ARCHIVE_SET( + object->purge_job) ? 1 : 0, buffer); packstr(object->archive_script, buffer); - pack16(0, buffer); - pack16(0, buffer); + pack16((uint16_t)SLURMDB_PURGE_ARCHIVE_SET( + object->purge_step) ? 1 : 0, buffer); + pack16((uint16_t)SLURMDB_PURGE_ARCHIVE_SET( + object->purge_suspend) ? 1 : 0, buffer); slurmdb_pack_job_cond(object->job_cond, rpc_version, buffer); pack16((uint16_t)object->purge_event, buffer); pack16((uint16_t)object->purge_job, buffer); @@ -3636,30 +3640,30 @@ extern int slurmdb_unpack_archive_cond(void **object, uint16_t rpc_version, rpc_version, buffer) == SLURM_ERROR) goto unpack_error; safe_unpack16(&tmp16, buffer); + object_ptr->purge_event = tmp16; if(tmp16 != (uint16_t)NO_VAL) { - object_ptr->purge_event = tmp16; object_ptr->purge_event |= SLURMDB_PURGE_MONTHS; if(a_events) object_ptr->purge_event |= SLURMDB_PURGE_ARCHIVE; } safe_unpack16(&tmp16, buffer); + object_ptr->purge_job = tmp16; if(tmp16 != (uint16_t)NO_VAL) { - object_ptr->purge_job = tmp16; object_ptr->purge_job |= SLURMDB_PURGE_MONTHS; if(a_jobs) object_ptr->purge_job |= SLURMDB_PURGE_ARCHIVE; } safe_unpack16(&tmp16, buffer); + object_ptr->purge_step = tmp16; if(tmp16 != (uint16_t)NO_VAL) { - object_ptr->purge_step = tmp16; object_ptr->purge_step |= SLURMDB_PURGE_MONTHS; if(a_steps) object_ptr->purge_step |= SLURMDB_PURGE_ARCHIVE; } safe_unpack16(&tmp16, buffer); + object_ptr->purge_suspend = tmp16; if(tmp16 != (uint16_t)NO_VAL) { - object_ptr->purge_suspend = tmp16; object_ptr->purge_suspend |= SLURMDB_PURGE_MONTHS; if(a_suspend) object_ptr->purge_suspend |= diff --git a/src/plugins/accounting_storage/mysql/as_mysql_archive.c b/src/plugins/accounting_storage/mysql/as_mysql_archive.c index e8a3d6b3a85..f37acb49c0b 100644 --- a/src/plugins/accounting_storage/mysql/as_mysql_archive.c +++ b/src/plugins/accounting_storage/mysql/as_mysql_archive.c @@ -542,6 +542,53 @@ static int _unpack_local_suspend(local_suspend_t *object, return SLURM_SUCCESS; } +static time_t _setup_end_time(time_t last_submit, uint32_t purge) +{ + struct tm time_tm; + int16_t units; + + if(purge == NO_VAL) { + error("Invalid purge set"); + return 0; + } + + units = SLURMDB_PURGE_GET_UNITS(purge); + if(units < 0) { + error("invalid units from purge '%d'", units); + return 0; + } + + /* use localtime to avoid any daylight savings issues */ + if(!localtime_r(&last_submit, &time_tm)) { + error("Couldn't get localtime from first " + "suspend start %d", + last_submit); + return 0; + } + + time_tm.tm_sec = 0; + time_tm.tm_min = 0; + + if(SLURMDB_PURGE_IN_HOURS(purge)) + time_tm.tm_hour -= units; + else if(SLURMDB_PURGE_IN_DAYS(purge)) { + time_tm.tm_hour = 0; + time_tm.tm_mday -= units; + } else if(SLURMDB_PURGE_IN_MONTHS(purge)) { + time_tm.tm_hour = 0; + time_tm.tm_mday = 1; + time_tm.tm_mon -= units; + } else { + error("No known unit given for purge, " + "we are guessing mistake and returning error"); + return 0; + } + + time_tm.tm_isdst = -1; + return (mktime(&time_tm) - 1); +} + + static int _process_old_sql_line(const char *data_in, char **data_full_out) { int start = 0, i = 0; @@ -1770,9 +1817,7 @@ static int _archive_script(slurmdb_archive_cond_t *arch_cond, const char *tmpdir; struct stat st; char **env = NULL; - struct tm time_tm; time_t curr_end; - uint32_t units; #ifdef _PATH_TMP tmpdir = _PATH_TMP; @@ -1806,31 +1851,13 @@ static int _archive_script(slurmdb_archive_cond_t *arch_cond, env_array_append_fmt(&env, "SLURM_ARCHIVE_CLUSTER", "%s", cluster_name); - if((units = SLURMDB_PURGE_GET_UNITS(arch_cond->purge_event))) { - /* use localtime to avoid any daylight savings issues */ - if(!localtime_r(&last_submit, &time_tm)) { - error("Couldn't get localtime from " - "first event start %d", - last_submit); + if(arch_cond->purge_event != NO_VAL) { + if(!(curr_end = _setup_end_time( + last_submit, arch_cond->purge_event))) { + error("Parsing purge events"); return SLURM_ERROR; } - time_tm.tm_sec = 0; - time_tm.tm_min = 0; - - if(SLURMDB_PURGE_IN_HOURS(arch_cond->purge_event)) - time_tm.tm_hour -= units; - else if(SLURMDB_PURGE_IN_DAYS(arch_cond->purge_event)) { - time_tm.tm_hour = 0; - time_tm.tm_mday -= units; - } else { - time_tm.tm_hour = 0; - time_tm.tm_mday = 1; - time_tm.tm_mon -= units; - } - - time_tm.tm_isdst = -1; - curr_end = mktime(&time_tm); env_array_append_fmt(&env, "SLURM_ARCHIVE_EVENTS", "%u", SLURMDB_PURGE_ARCHIVE_SET( arch_cond->purge_event)); @@ -1838,31 +1865,13 @@ static int _archive_script(slurmdb_archive_cond_t *arch_cond, curr_end); } - if((units = SLURMDB_PURGE_GET_UNITS(arch_cond->purge_job))) { - /* use localtime to avoid any daylight savings issues */ - if(!localtime_r(&last_submit, &time_tm)) { - error("Couldn't get localtime from first start %d", - last_submit); + if(arch_cond->purge_job != NO_VAL) { + if(!(curr_end = _setup_end_time( + last_submit, arch_cond->purge_job))) { + error("Parsing purge job"); return SLURM_ERROR; } - time_tm.tm_sec = 0; - time_tm.tm_min = 0; - - if(SLURMDB_PURGE_IN_HOURS(arch_cond->purge_job)) - time_tm.tm_hour -= units; - else if(SLURMDB_PURGE_IN_DAYS(arch_cond->purge_job)) { - time_tm.tm_hour = 0; - time_tm.tm_mday -= units; - } else { - time_tm.tm_hour = 0; - time_tm.tm_mday = 1; - time_tm.tm_mon -= units; - } - - time_tm.tm_isdst = -1; - curr_end = mktime(&time_tm); - env_array_append_fmt(&env, "SLURM_ARCHIVE_JOBS", "%u", SLURMDB_PURGE_ARCHIVE_SET( arch_cond->purge_job)); @@ -1870,30 +1879,13 @@ static int _archive_script(slurmdb_archive_cond_t *arch_cond, curr_end); } - if((units = SLURMDB_PURGE_GET_UNITS(arch_cond->purge_step))) { - /* use localtime to avoid any daylight savings issues */ - if(!localtime_r(&last_submit, &time_tm)) { - error("Couldn't get localtime from first step start %d", - last_submit); + if(arch_cond->purge_step != NO_VAL) { + if(!(curr_end = _setup_end_time( + last_submit, arch_cond->purge_step))) { + error("Parsing purge step"); return SLURM_ERROR; } - time_tm.tm_sec = 0; - time_tm.tm_min = 0; - - if(SLURMDB_PURGE_IN_HOURS(arch_cond->purge_step)) - time_tm.tm_hour -= units; - else if(SLURMDB_PURGE_IN_DAYS(arch_cond->purge_step)) { - time_tm.tm_hour = 0; - time_tm.tm_mday -= units; - } else { - time_tm.tm_hour = 0; - time_tm.tm_mday = 1; - time_tm.tm_mon -= units; - } - - time_tm.tm_isdst = -1; - curr_end = mktime(&time_tm); env_array_append_fmt(&env, "SLURM_ARCHIVE_STEPS", "%u", SLURMDB_PURGE_ARCHIVE_SET( arch_cond->purge_step)); @@ -1901,31 +1893,13 @@ static int _archive_script(slurmdb_archive_cond_t *arch_cond, curr_end); } - if((units = SLURMDB_PURGE_GET_UNITS(arch_cond->purge_suspend))) { - /* use localtime to avoid any daylight savings issues */ - if(!localtime_r(&last_submit, &time_tm)) { - error("Couldn't get localtime from first " - "suspend start %d", - last_submit); + if(arch_cond->purge_suspend != NO_VAL) { + if(!(curr_end = _setup_end_time( + last_submit, arch_cond->purge_suspend))) { + error("Parsing purge suspend"); return SLURM_ERROR; } - time_tm.tm_sec = 0; - time_tm.tm_min = 0; - - if(SLURMDB_PURGE_IN_HOURS(arch_cond->purge_suspend)) - time_tm.tm_hour -= units; - else if(SLURMDB_PURGE_IN_DAYS(arch_cond->purge_suspend)) { - time_tm.tm_hour = 0; - time_tm.tm_mday -= units; - } else { - time_tm.tm_hour = 0; - time_tm.tm_mday = 1; - time_tm.tm_mon -= units; - } - - time_tm.tm_isdst = -1; - curr_end = mktime(&time_tm); env_array_append_fmt(&env, "SLURM_ARCHIVE_SUSPEND", "%u", SLURMDB_PURGE_ARCHIVE_SET( arch_cond->purge_suspend)); @@ -1952,8 +1926,6 @@ static int _execute_archive(mysql_conn_t *mysql_conn, int rc = SLURM_SUCCESS; char *query = NULL; time_t curr_end; - struct tm time_tm; - uint32_t units; time_t last_submit = time(NULL); if(arch_cond->archive_script) @@ -1963,36 +1935,18 @@ static int _execute_archive(mysql_conn_t *mysql_conn, return SLURM_ERROR; } - if((units = SLURMDB_PURGE_GET_UNITS(arch_cond->purge_event))) { + if(arch_cond->purge_event != NO_VAL) { /* remove all data from event table that was older than * period_start * arch_cond->purge_event. */ - /* use localtime to avoid any daylight savings issues */ - if(!localtime_r(&last_submit, &time_tm)) { - error("Couldn't get localtime from first submit %d", - last_submit); + if(!(curr_end = _setup_end_time( + last_submit, arch_cond->purge_event))) { + error("Parsing purge event"); return SLURM_ERROR; } - time_tm.tm_sec = 0; - time_tm.tm_min = 0; - - if(SLURMDB_PURGE_IN_HOURS(arch_cond->purge_event)) - time_tm.tm_hour -= units; - else if(SLURMDB_PURGE_IN_DAYS(arch_cond->purge_event)) { - time_tm.tm_hour = 0; - time_tm.tm_mday -= units; - } else { - time_tm.tm_hour = 0; - time_tm.tm_mday = 1; - time_tm.tm_mon -= units; - } - time_tm.tm_isdst = -1; - curr_end = mktime(&time_tm); - curr_end--; - - debug4("from %d - %d days/months purging events from before %d", - last_submit, arch_cond->purge_event, curr_end); + debug4("Purging event entries before %d for %s", + curr_end, cluster_name); if(SLURMDB_PURGE_ARCHIVE_SET(arch_cond->purge_event)) { rc = _archive_events(mysql_conn, cluster_name, @@ -2018,36 +1972,18 @@ static int _execute_archive(mysql_conn_t *mysql_conn, exit_events: - if((units = SLURMDB_PURGE_GET_UNITS(arch_cond->purge_suspend))) { + if(arch_cond->purge_suspend != NO_VAL) { /* remove all data from suspend table that was older than * period_start * arch_cond->purge_suspend. */ - /* use localtime to avoid any daylight savings issues */ - if(!localtime_r(&last_submit, &time_tm)) { - error("Couldn't get localtime from first submit %d", - last_submit); + if(!(curr_end = _setup_end_time( + last_submit, arch_cond->purge_suspend))) { + error("Parsing purge suspend"); return SLURM_ERROR; } - time_tm.tm_sec = 0; - time_tm.tm_min = 0; - - if(SLURMDB_PURGE_IN_HOURS(arch_cond->purge_suspend)) - time_tm.tm_hour -= units; - else if(SLURMDB_PURGE_IN_DAYS(arch_cond->purge_suspend)) { - time_tm.tm_hour = 0; - time_tm.tm_mday -= units; - } else { - time_tm.tm_hour = 0; - time_tm.tm_mday = 1; - time_tm.tm_mon -= units; - } - time_tm.tm_isdst = -1; - curr_end = mktime(&time_tm); - curr_end--; - - debug4("from %d - %d months purging suspend from before %d", - last_submit, arch_cond->purge_suspend, curr_end); + debug4("Purging suspend entries before %d for %s", + curr_end, cluster_name); if(SLURMDB_PURGE_ARCHIVE_SET(arch_cond->purge_suspend)) { rc = _archive_suspend(mysql_conn, cluster_name, @@ -2073,36 +2009,18 @@ exit_events: exit_suspend: - if((units = SLURMDB_PURGE_GET_UNITS(arch_cond->purge_step))) { + if(arch_cond->purge_step != NO_VAL) { /* remove all data from step table that was older than * start * arch_cond->purge_step. */ - /* use localtime to avoid any daylight savings issues */ - if(!localtime_r(&last_submit, &time_tm)) { - error("Couldn't get localtime from first start %d", - last_submit); + if(!(curr_end = _setup_end_time( + last_submit, arch_cond->purge_step))) { + error("Parsing purge step"); return SLURM_ERROR; } - time_tm.tm_sec = 0; - time_tm.tm_min = 0; - - if(SLURMDB_PURGE_IN_HOURS(arch_cond->purge_step)) - time_tm.tm_hour -= units; - else if(SLURMDB_PURGE_IN_DAYS(arch_cond->purge_step)) { - time_tm.tm_hour = 0; - time_tm.tm_mday -= units; - } else { - time_tm.tm_hour = 0; - time_tm.tm_mday = 1; - time_tm.tm_mon -= units; - } - - time_tm.tm_isdst = -1; - curr_end = mktime(&time_tm); - curr_end--; - debug4("from %d - %d months purging steps from before %d", - last_submit, arch_cond->purge_step, curr_end); + debug4("Purging step entries before %d for %s", + curr_end, cluster_name); if(SLURMDB_PURGE_ARCHIVE_SET(arch_cond->purge_step)) { rc = _archive_steps(mysql_conn, cluster_name, @@ -2128,36 +2046,18 @@ exit_suspend: } exit_steps: - if((units = SLURMDB_PURGE_GET_UNITS(arch_cond->purge_job))) { + if(arch_cond->purge_job != NO_VAL) { /* remove all data from job table that was older than * last_submit * arch_cond->purge_job. */ - /* use localtime to avoid any daylight savings issues */ - if(!localtime_r(&last_submit, &time_tm)) { - error("Couldn't get localtime from first submit %d", - last_submit); + if(!(curr_end = _setup_end_time( + last_submit, arch_cond->purge_job))) { + error("Parsing purge job"); return SLURM_ERROR; } - time_tm.tm_sec = 0; - time_tm.tm_min = 0; - - if(SLURMDB_PURGE_IN_HOURS(arch_cond->purge_job)) - time_tm.tm_hour -= units; - else if(SLURMDB_PURGE_IN_DAYS(arch_cond->purge_job)) { - time_tm.tm_hour = 0; - time_tm.tm_mday -= units; - } else { - time_tm.tm_hour = 0; - time_tm.tm_mday = 1; - time_tm.tm_mon -= units; - } - - time_tm.tm_isdst = -1; - curr_end = mktime(&time_tm); - curr_end--; - debug4("from %d - %d months purging jobs from before %d", - last_submit, arch_cond->purge_job, curr_end); + debug4("Purging job entires before %d for %s", + curr_end, cluster_name); if(SLURMDB_PURGE_ARCHIVE_SET(arch_cond->purge_job)) { rc = _archive_jobs(mysql_conn, cluster_name, diff --git a/src/plugins/accounting_storage/mysql/as_mysql_rollup.c b/src/plugins/accounting_storage/mysql/as_mysql_rollup.c index 1fef43f675d..625ccebefab 100644 --- a/src/plugins/accounting_storage/mysql/as_mysql_rollup.c +++ b/src/plugins/accounting_storage/mysql/as_mysql_rollup.c @@ -121,12 +121,20 @@ static int _process_purge(mysql_conn_t *mysql_conn, if(purge_period & slurmdbd_conf->purge_event) arch_cond.purge_event = slurmdbd_conf->purge_event; + else + arch_cond.purge_event = NO_VAL; if(purge_period & slurmdbd_conf->purge_job) arch_cond.purge_job = slurmdbd_conf->purge_job; + else + arch_cond.purge_job = NO_VAL; if(purge_period & slurmdbd_conf->purge_step) arch_cond.purge_step = slurmdbd_conf->purge_step; + else + arch_cond.purge_step = NO_VAL; if(purge_period & slurmdbd_conf->purge_suspend) arch_cond.purge_suspend = slurmdbd_conf->purge_suspend; + else + arch_cond.purge_suspend = NO_VAL; job_cond.cluster_list = list_create(NULL); list_append(job_cond.cluster_list, cluster_name); diff --git a/src/sacctmgr/archive_functions.c b/src/sacctmgr/archive_functions.c index 082a1b9cae6..6b6c0a6615e 100644 --- a/src/sacctmgr/archive_functions.c +++ b/src/sacctmgr/archive_functions.c @@ -275,7 +275,8 @@ static int _set_cond(int *start, int argc, char *argv[], set = 1; } else if (!strncasecmp (argv[i], "PurgeEventAfter", MAX(command_len, 10))) { - if (!(tmp = slurmdb_parse_purge(argv[i]+end))) { + if ((tmp = slurmdb_parse_purge(argv[i]+end)) + == NO_VAL) { exit_code = 1; } else { arch_cond->purge_event |= tmp; @@ -283,7 +284,8 @@ static int _set_cond(int *start, int argc, char *argv[], } } else if (!strncasecmp (argv[i], "PurgeJobAfter", MAX(command_len, 10))) { - if (!(tmp = slurmdb_parse_purge(argv[i]+end))) { + if ((tmp = slurmdb_parse_purge(argv[i]+end)) + == NO_VAL) { exit_code = 1; } else { arch_cond->purge_job |= tmp; @@ -291,7 +293,8 @@ static int _set_cond(int *start, int argc, char *argv[], } } else if (!strncasecmp (argv[i], "PurgeStepAfter", MAX(command_len, 10))) { - if (!(tmp = slurmdb_parse_purge(argv[i]+end))) { + if ((tmp = slurmdb_parse_purge(argv[i]+end)) + == NO_VAL) { exit_code = 1; } else { arch_cond->purge_step |= tmp; @@ -299,7 +302,8 @@ static int _set_cond(int *start, int argc, char *argv[], } } else if (!strncasecmp (argv[i], "PurgeSuspendAfter", MAX(command_len, 10))) { - if (!(tmp = slurmdb_parse_purge(argv[i]+end))) { + if ((tmp = slurmdb_parse_purge(argv[i]+end)) + == NO_VAL) { exit_code = 1; } else { arch_cond->purge_suspend |= tmp; @@ -390,6 +394,15 @@ extern int sacctmgr_archive_dump(int argc, char *argv[]) _set_cond(&i, argc, argv, arch_cond); } + if(!arch_cond->purge_event) + arch_cond->purge_event = NO_VAL; + if(!arch_cond->purge_job) + arch_cond->purge_job = NO_VAL; + if(!arch_cond->purge_step) + arch_cond->purge_step = NO_VAL; + if(!arch_cond->purge_suspend) + arch_cond->purge_suspend = NO_VAL; + if(exit_code) { slurmdb_destroy_archive_cond(arch_cond); return SLURM_ERROR; diff --git a/src/slurmdbd/read_config.c b/src/slurmdbd/read_config.c index a88b3d08fac..31042683de9 100644 --- a/src/slurmdbd/read_config.c +++ b/src/slurmdbd/read_config.c @@ -455,28 +455,28 @@ extern void log_config(void) debug2("PrivateData = %s", tmp_str); - if(slurmdbd_conf->purge_event) + if(slurmdbd_conf->purge_event != NO_VAL) slurmdb_purge_string(slurmdbd_conf->purge_event, tmp_str, sizeof(tmp_str), 1); else sprintf(tmp_str, "NONE"); debug2("PurgeEventAfter = %s", tmp_str); - if(slurmdbd_conf->purge_job) + if(slurmdbd_conf->purge_job != NO_VAL) slurmdb_purge_string(slurmdbd_conf->purge_job, tmp_str, sizeof(tmp_str), 1); else sprintf(tmp_str, "NONE"); debug2("PurgeJobAfter = %s", tmp_str); - if(slurmdbd_conf->purge_step) + if(slurmdbd_conf->purge_step != NO_VAL) slurmdb_purge_string(slurmdbd_conf->purge_step, tmp_str, sizeof(tmp_str), 1); else sprintf(tmp_str, "NONE"); debug2("PurgeStepAfter = %s", tmp_str); - if(slurmdbd_conf->purge_suspend) + if(slurmdbd_conf->purge_suspend != NO_VAL) slurmdb_purge_string(slurmdbd_conf->purge_suspend, tmp_str, sizeof(tmp_str), 1); else @@ -559,11 +559,39 @@ extern List dump_config(void) key_pair->value = xstrdup(slurmdbd_conf->archive_dir); list_append(my_list, key_pair); + key_pair = xmalloc(sizeof(config_key_pair_t)); + key_pair->name = xstrdup("ArchiveEvents"); + key_pair->value = xmalloc(16); + snprintf(key_pair->value, 16, "%u", + SLURMDB_PURGE_ARCHIVE_SET(slurmdbd_conf->purge_event) ? 1 : 0); + list_append(my_list, key_pair); + + key_pair = xmalloc(sizeof(config_key_pair_t)); + key_pair->name = xstrdup("ArchiveJobs"); + key_pair->value = xmalloc(16); + snprintf(key_pair->value, 16, "%u", + SLURMDB_PURGE_ARCHIVE_SET(slurmdbd_conf->purge_job) ? 1 : 0); + list_append(my_list, key_pair); + key_pair = xmalloc(sizeof(config_key_pair_t)); key_pair->name = xstrdup("ArchiveScript"); key_pair->value = xstrdup(slurmdbd_conf->archive_script); list_append(my_list, key_pair); + key_pair = xmalloc(sizeof(config_key_pair_t)); + key_pair->name = xstrdup("ArchiveSteps"); + key_pair->value = xmalloc(16); + snprintf(key_pair->value, 16, "%u", + SLURMDB_PURGE_ARCHIVE_SET(slurmdbd_conf->purge_step) ? 1 : 0); + list_append(my_list, key_pair); + + key_pair = xmalloc(sizeof(config_key_pair_t)); + key_pair->name = xstrdup("ArchiveSupend"); + key_pair->value = xmalloc(16); + snprintf(key_pair->value, 16, "%u", SLURMDB_PURGE_ARCHIVE_SET( + slurmdbd_conf->purge_suspend) ? 1 : 0); + list_append(my_list, key_pair); + key_pair = xmalloc(sizeof(config_key_pair_t)); key_pair->name = xstrdup("AuthInfo"); key_pair->value = xstrdup(slurmdbd_conf->auth_info); @@ -642,7 +670,7 @@ extern List dump_config(void) key_pair = xmalloc(sizeof(config_key_pair_t)); key_pair->name = xstrdup("PurgeEventAfter"); - if(slurmdbd_conf->purge_event) { + if(slurmdbd_conf->purge_event != NO_VAL) { key_pair->value = xmalloc(32); slurmdb_purge_string(slurmdbd_conf->purge_event, key_pair->value, 32, 1); @@ -652,7 +680,7 @@ extern List dump_config(void) key_pair = xmalloc(sizeof(config_key_pair_t)); key_pair->name = xstrdup("PurgeJobAfter"); - if(slurmdbd_conf->purge_job) { + if(slurmdbd_conf->purge_job != NO_VAL) { key_pair->value = xmalloc(32); slurmdb_purge_string(slurmdbd_conf->purge_job, key_pair->value, 32, 1); @@ -662,7 +690,7 @@ extern List dump_config(void) key_pair = xmalloc(sizeof(config_key_pair_t)); key_pair->name = xstrdup("PurgeStepAfter"); - if(slurmdbd_conf->purge_step) { + if(slurmdbd_conf->purge_step != NO_VAL) { key_pair->value = xmalloc(32); slurmdb_purge_string(slurmdbd_conf->purge_step, key_pair->value, 32, 1); @@ -672,7 +700,7 @@ extern List dump_config(void) key_pair = xmalloc(sizeof(config_key_pair_t)); key_pair->name = xstrdup("PurgeSuspendAfter"); - if(slurmdbd_conf->purge_suspend) { + if(slurmdbd_conf->purge_suspend != NO_VAL) { key_pair->value = xmalloc(32); slurmdb_purge_string(slurmdbd_conf->purge_suspend, key_pair->value, 32, 1); -- GitLab