Skip to content

Commit a8ce53c

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 63f10f5 commit a8ce53c

File tree

4 files changed

+279
-11
lines changed

4 files changed

+279
-11
lines changed

src/modules/job-list/job_data.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,13 @@ void job_destroy (void *data)
3333
free (job->nodelist);
3434
json_decref (job->annotations);
3535
grudgeset_destroy (job->dependencies);
36+
json_decref (job->dependencies_db);
3637
json_decref (job->jobspec);
3738
json_decref (job->R);
3839
free (job->eventlog);
3940
json_decref (job->exception_context);
4041
zlist_destroy (&job->next_states);
42+
json_decref (job->job_dbdata);
4143
free (job);
4244
}
4345
}

src/modules/job-list/job_data.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,11 @@ struct job {
6161
const char *exception_note;
6262
flux_job_result_t result;
6363
json_t *annotations;
64+
/* dependencies - built up
65+
* dependencies_db - recovered from db
66+
*/
6467
struct grudgeset *dependencies;
68+
json_t *dependencies_db;
6569

6670
/* cache of job information */
6771
json_t *jobspec;
@@ -70,6 +74,9 @@ struct job {
7074
size_t eventlog_len;
7175
json_t *exception_context;
7276

77+
/* all job data from db */
78+
json_t *job_dbdata;
79+
7380
/* Track which states we have seen and have completed transition
7481
* to. We do not immediately update to the new state and place
7582
* 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
@@ -178,7 +178,10 @@ static int store_attr (struct job *job,
178178
else if (!strcmp (attr, "dependencies")) {
179179
if (!job->dependencies)
180180
return 0;
181-
val = json_incref (grudgeset_tojson (job->dependencies));
181+
if (job->dependencies_db)
182+
val = json_incref (job->dependencies_db);
183+
else
184+
val = json_incref (grudgeset_tojson (job->dependencies));
182185
}
183186
else {
184187
seterror (errp, "%s is not a valid attribute", attr);

0 commit comments

Comments
 (0)