Skip to content

Commit 42675e5

Browse files
authored
scheduler: Fix cleaning jobs by loading times when needed
Currently if we load jobs from job.cache, we don't set correct times for history_time and file_time, resulting them in being 0 and the jobs avoids the cleanup by cupsd when needed, leading into eating up memory space. It happens because none of the functions which set those job members are not called - cupsdSetJobState() is used when changing job states, cupsdUpdateJobs() during partial reload and cupsdLoadJob() is guarded by condition in load_job_cache(). The fix is to change conditional in load_job_cache() which will cause loading of the job if cupsd is set to clean up job history, or if cupsd should clean up job files and the job still has some.
2 parents bcb4814 + e129afd commit 42675e5

1 file changed

Lines changed: 2 additions & 1 deletion

File tree

scheduler/job.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4428,7 +4428,8 @@ load_job_cache(const char *filename) /* I - job.cache filename */
44284428
cupsArrayAdd(ActiveJobs, job);
44294429
else if (job->state_value > IPP_JSTATE_STOPPED)
44304430
{
4431-
if (!job->completed_time || !job->creation_time || !job->name || !job->koctets)
4431+
if (!job->completed_time || !job->creation_time || !job->name || !job->koctets ||
4432+
JobHistory < INT_MAX || (JobFiles < INT_MAX && job->num_files))
44324433
{
44334434
cupsdLoadJob(job);
44344435
unload_job(job);

0 commit comments

Comments
 (0)