mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2025-08-07 14:00:09 +02:00

refactor the expire worker to make it easier to extend GitOrigin-RevId: 7b277b243ed51ab3b46316d98b7157af95a9e42b
52 lines
1.2 KiB
JavaScript
52 lines
1.2 KiB
JavaScript
const logger = require('@overleaf/logger')
|
|
const commandLineArgs = require('command-line-args')
|
|
const redis = require('../lib/redis')
|
|
const { scanAndProcessDueItems } = require('../lib/scan')
|
|
const { expireProject, claimExpireJob } = require('../lib/chunk_store/redis')
|
|
|
|
const rclient = redis.rclientHistory
|
|
|
|
const optionDefinitions = [{ name: 'dry-run', alias: 'd', type: Boolean }]
|
|
const options = commandLineArgs(optionDefinitions)
|
|
const DRY_RUN = options['dry-run'] || false
|
|
|
|
logger.initialize('expire-redis-chunks')
|
|
|
|
async function expireProjectAction(projectId) {
|
|
const job = await claimExpireJob(projectId)
|
|
try {
|
|
await expireProject(projectId)
|
|
} finally {
|
|
if (job && job.close) {
|
|
await job.close()
|
|
}
|
|
}
|
|
}
|
|
|
|
async function runExpireChunks() {
|
|
await scanAndProcessDueItems(
|
|
rclient,
|
|
'expireChunks',
|
|
'expire-time',
|
|
expireProjectAction,
|
|
DRY_RUN
|
|
)
|
|
}
|
|
|
|
if (require.main === module) {
|
|
runExpireChunks()
|
|
.catch(err => {
|
|
logger.fatal(
|
|
{ err, taskName: 'expireChunks' },
|
|
'Unhandled error in runExpireChunks'
|
|
)
|
|
process.exit(1)
|
|
})
|
|
.finally(async () => {
|
|
await redis.disconnect()
|
|
})
|
|
} else {
|
|
module.exports = {
|
|
runExpireChunks,
|
|
}
|
|
}
|