check for existing job before enqueueing

This commit is contained in:
Hongbo Wu
2024-05-26 14:48:30 +08:00
parent 67dac9ba31
commit 25a984dc6a
2 changed files with 18 additions and 2 deletions

View File

@ -5,7 +5,11 @@ import {
QueryJustReadFeedArgs,
} from '../../generated/graphql'
import { getJustReadFeedSections } from '../../jobs/update_just_read_feed'
import { enqueueUpdateJustReadFeed } from '../../utils/createTask'
import { getJob } from '../../queue-processor'
import {
enqueueUpdateJustReadFeed,
updateJustReadFeedJobId,
} from '../../utils/createTask'
import { authorized } from '../../utils/gql-utils'
// This resolver is used to fetch the just read feed for the user.
@ -23,6 +27,15 @@ export const justReadFeedResolver = authorized<
log.info('Just read feed sections fetched')
if (sections.length === 0) {
const existingJob = await getJob(updateJustReadFeedJobId(uid))
if (existingJob) {
log.info('Just read feed update job already enqueued')
return {
errorCodes: [JustReadFeedErrorCode.Pending],
}
}
await enqueueUpdateJustReadFeed({
userId: uid,
})

View File

@ -986,6 +986,9 @@ export const enqueueBulkUploadContentJob = async (
return queue.addBulk(jobs)
}
export const updateJustReadFeedJobId = (userId: string) =>
`${UPDATE_JUST_READ_FEED_JOB}_${userId}_${JOB_VERSION}`
export const enqueueUpdateJustReadFeed = async (
data: UpdateJustReadFeedJobData
) => {
@ -995,7 +998,7 @@ export const enqueueUpdateJustReadFeed = async (
}
return queue.add(UPDATE_JUST_READ_FEED_JOB, data, {
jobId: `${UPDATE_JUST_READ_FEED_JOB}_${data.userId}_${JOB_VERSION}`,
jobId: updateJustReadFeedJobId(data.userId),
removeOnComplete: true,
removeOnFail: true,
priority: getJobPriority(UPDATE_JUST_READ_FEED_JOB),