Skip to content

Commit c3efc28

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 39bf25d commit c3efc28

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
@@ -28,11 +28,13 @@ void job_destroy (void *data)
2828
free (job->nodelist);
2929
json_decref (job->annotations);
3030
grudgeset_destroy (job->dependencies);
31+
json_decref (job->dependencies_db);
3132
json_decref (job->jobspec);
3233
json_decref (job->R);
3334
free (job->eventlog);
3435
json_decref (job->exception_context);
3536
zlist_destroy (&job->next_states);
37+
json_decref (job->job_dbdata);
3638
free (job);
3739
}
3840
}

src/modules/job-list/job_data.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,11 @@ struct job {
5757
const char *exception_note;
5858
flux_job_result_t result;
5959
json_t *annotations;
60+
/* dependencies - built up
61+
* dependencies_db - recovered from db
62+
*/
6063
struct grudgeset *dependencies;
64+
json_t *dependencies_db;
6165

6266
/* cache of job information */
6367
json_t *jobspec;
@@ -66,6 +70,9 @@ struct job {
6670
size_t eventlog_len;
6771
json_t *exception_context;
6872

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