overleaf-cep/services/history-v1/storage/scripts/expire_redis_chunks.js
Brian Gough 9e07549ecb Merge pull request #25449 from overleaf/bg-histoy-redis-refactor-expire-worker
refactor the expire worker to make it easier to extend

GitOrigin-RevId: 7b277b243ed51ab3b46316d98b7157af95a9e42b
2025-05-12 08:05:19 +00:00

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,
}
}