diff --git a/NEWS b/NEWS index dce07bb040d382d7dba4a2855dd850f3f884080d..da3ba38822cfc3f6988498823f3be238aec149ad 100644 --- a/NEWS +++ b/NEWS @@ -120,7 +120,9 @@ documents those changes that are of interest to users and admins. -- Remove registration messages from saved messages when bringing down cluster. Without causes deadlock if wrong cluster name is given. -- Correction to build like for srun debugger (export symbols). - + -- sacct will now display more properly allocations made with salloc with only + one step. + * Changes in SLURM 1.3.10 ========================= -- Fix several bugs in the hostlist functions: @@ -702,6 +704,8 @@ documents those changes that are of interest to users and admins. -- For spank_get_item(S_JOB_ARGV) for batch job with script input via STDIN, set argc value to 1 (rather than 2, argv[0] still set to path of generated script). + -- sacct will now display more properly allocations made with salloc with only + one step. * Changes in SLURM 1.2.35 ========================= diff --git a/src/plugins/accounting_storage/filetxt/filetxt_jobacct_process.c b/src/plugins/accounting_storage/filetxt/filetxt_jobacct_process.c index eb17140bed11ebfa00b5663d273742609991057b..0af14a311f97fb1c956cbb5a265fbb9b74acb4b9 100644 --- a/src/plugins/accounting_storage/filetxt/filetxt_jobacct_process.c +++ b/src/plugins/accounting_storage/filetxt/filetxt_jobacct_process.c @@ -911,8 +911,22 @@ static void _process_step(List job_list, char *f[], int lc, step = temp; temp = NULL; list_append(job->steps, step); - if(list_count(job->steps) > 1) - job->track_steps = 1; + if(!job->track_steps) { + /* If we don't have track_steps we want to see + if we have multiple steps. If we only have + 1 step check the job name against the step + name in most all cases it will be + different. If it is different print out + the step separate. + */ + if(list_count(job->steps) > 1) + job->track_steps = 1; + else if(step && step->stepname && job->jobname) { + if(strcmp(step->stepname, job->jobname)) + job->track_steps = 1; + } + } + if(job->header.timestamp == 0) job->header.timestamp = step->header.timestamp; job->job_step_seen = 1; diff --git a/src/plugins/accounting_storage/mysql/mysql_jobacct_process.c b/src/plugins/accounting_storage/mysql/mysql_jobacct_process.c index 1f816e03921e550c76c0868e6146f4acf8ad7611..1e4b21ee6233dc0b355d2c743c5a5b23486617ec 100644 --- a/src/plugins/accounting_storage/mysql/mysql_jobacct_process.c +++ b/src/plugins/accounting_storage/mysql/mysql_jobacct_process.c @@ -734,8 +734,21 @@ no_cond: } mysql_free_result(step_result); - if(list_count(job->steps) > 1) - job->track_steps = 1; + if(!job->track_steps) { + /* If we don't have track_steps we want to see + if we have multiple steps. If we only have + 1 step check the job name against the step + name in most all cases it will be + different. If it is different print out + the step separate. + */ + if(list_count(job->steps) > 1) + job->track_steps = 1; + else if(step && step->stepname && job->jobname) { + if(strcmp(step->stepname, job->jobname)) + job->track_steps = 1; + } + } } mysql_free_result(result); diff --git a/src/plugins/accounting_storage/pgsql/pgsql_jobacct_process.c b/src/plugins/accounting_storage/pgsql/pgsql_jobacct_process.c index 7b3bc6ab7759e3b0eb305800ec8e15b15fbc51ec..1456e1956c9c882f1559a2c77cf4d2b5748d5f70 100644 --- a/src/plugins/accounting_storage/pgsql/pgsql_jobacct_process.c +++ b/src/plugins/accounting_storage/pgsql/pgsql_jobacct_process.c @@ -685,8 +685,21 @@ no_cond: } PQclear(step_result); - if(list_count(job->steps) > 1) - job->track_steps = 1; + if(!job->track_steps) { + /* If we don't have track_steps we want to see + if we have multiple steps. If we only have + 1 step check the job name against the step + name in most all cases it will be + different. If it is different print out + the step separate. + */ + if(list_count(job->steps) > 1) + job->track_steps = 1; + else if(step && step->stepname && job->jobname) { + if(strcmp(step->stepname, job->jobname)) + job->track_steps = 1; + } + } } PQclear(result);