Skip to content

Commit 35e168f

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 9ce46a1 commit 35e168f

File tree

4 files changed

+280
-11
lines changed

4 files changed

+280
-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
@@ -59,7 +59,11 @@ struct job {
5959
const char *exception_note;
6060
flux_job_result_t result;
6161
json_t *annotations;
62+
/* dependencies - built up
63+
* dependencies_db - recovered from db
64+
*/
6265
struct grudgeset *dependencies;
66+
json_t *dependencies_db;
6367

6468
/* cache of job information */
6569
json_t *jobspec;
@@ -68,6 +72,9 @@ struct job {
6872
size_t eventlog_len;
6973
json_t *exception_context;
7074

75+
/* all job data from db */
76+
json_t *job_dbdata;
77+
7178
/* Track which states we have seen and have completed transition
7279
* to. We do not immediately update to the new state and place
7380
* 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)