Skip to content

Commit e03be2b

Browse files
committed
job-list: read from sqlite if necessary
Problem: Now that inactive jobs are stored to an sqlite database, it is possible to retrieve additional job information that is no longer stored in memory. Solution: When possible, read from sqlite to get additional job information about inactive jobs.
1 parent 9811f0f commit e03be2b

File tree

4 files changed

+277
-11
lines changed

4 files changed

+277
-11
lines changed

src/modules/job-list/job_data.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,13 @@ void job_destroy (void *data)
3030
free (job->nodelist);
3131
json_decref (job->annotations);
3232
grudgeset_destroy (job->dependencies);
33+
json_decref (job->dependencies_db);
3334
json_decref (job->jobspec);
3435
json_decref (job->R);
3536
free (job->eventlog);
3637
json_decref (job->exception_context);
3738
zlist_destroy (&job->next_states);
39+
json_decref (job->job_dbdata);
3840
free (job);
3941
}
4042
}

src/modules/job-list/job_data.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,11 @@ struct job {
5858
const char *exception_note;
5959
flux_job_result_t result;
6060
json_t *annotations;
61+
/* dependencies - built up
62+
* dependencies_db - recovered from db
63+
*/
6164
struct grudgeset *dependencies;
65+
json_t *dependencies_db;
6266

6367
/* cache of job information */
6468
json_t *jobspec;
@@ -67,6 +71,9 @@ struct job {
6771
size_t eventlog_len;
6872
json_t *exception_context;
6973

74+
/* all job data from db */
75+
json_t *job_dbdata;
76+
7077
/* Track which states we have seen and have completed transition
7178
* to. We do not immediately update to the new state and place
7279
* onto a new list until we have retrieved any necessary data

src/modules/job-list/job_util.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,10 @@ static int store_attr (struct job *job,
163163
else if (!strcmp (attr, "dependencies")) {
164164
if (!job->dependencies)
165165
return 0;
166-
val = json_incref (grudgeset_tojson (job->dependencies));
166+
if (job->dependencies_db)
167+
val = json_incref (job->dependencies_db);
168+
else
169+
val = json_incref (grudgeset_tojson (job->dependencies));
167170
}
168171
else {
169172
seterror (errp, "%s is not a valid attribute", attr);

0 commit comments

Comments
 (0)