| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- --[[
- Function to clean job set.
- Returns jobIds and deleted count number.
- ]]
- -- Includes
- --- @include "batches"
- --- @include "getJobsInZset"
- --- @include "getTimestamp"
- --- @include "isJobSchedulerJob"
- --- @include "removeJob"
- local function cleanSet(
- setKey,
- jobKeyPrefix,
- rangeEnd,
- timestamp,
- limit,
- attributes,
- isFinished,
- jobSchedulersKey)
- local jobs = getJobsInZset(setKey, rangeEnd, limit)
- local deleted = {}
- local deletedCount = 0
- local jobTS
- for i, job in ipairs(jobs) do
- if limit > 0 and deletedCount >= limit then
- break
- end
- local jobKey = jobKeyPrefix .. job
- -- Extract a Job Scheduler Id from jobId ("repeat:job-scheduler-id:millis")
- -- and check if it is in the scheduled jobs
- if not (jobSchedulersKey and isJobSchedulerJob(job, jobKey, jobSchedulersKey)) then
- if isFinished then
- removeJob(job, true, jobKeyPrefix, true --[[remove debounce key]] )
- deletedCount = deletedCount + 1
- table.insert(deleted, job)
- else
- -- * finishedOn says when the job was completed, but it isn't set unless the job has actually completed
- jobTS = getTimestamp(jobKey, attributes)
- if (not jobTS or jobTS <= timestamp) then
- removeJob(job, true, jobKeyPrefix, true --[[remove debounce key]] )
- deletedCount = deletedCount + 1
- table.insert(deleted, job)
- end
- end
- end
- end
- if (#deleted > 0) then
- for from, to in batches(#deleted, 7000) do
- rcall("ZREM", setKey, unpack(deleted, from, to))
- end
- end
- return {deleted, deletedCount}
- end
|