| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- 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 config = require('config')
- const { fetchNothing } = require('@overleaf/fetch-utils')
- const rclient = redis.rclientHistory
- const optionDefinitions = [
- { name: 'dry-run', alias: 'd', type: Boolean },
- { name: 'post-request', type: Boolean },
- ]
- const options = commandLineArgs(optionDefinitions)
- const DRY_RUN = options['dry-run'] || false
- const POST_REQUEST = options['post-request'] || false
- const HISTORY_V1_URL = `http://${process.env.HISTORY_V1_HOST || 'localhost'}:${process.env.PORT || 3100}`
- logger.initialize('expire-redis-chunks')
- async function expireProjectAction(projectId) {
- const job = await claimExpireJob(projectId)
- if (POST_REQUEST) {
- await requestProjectExpiry(projectId)
- } else {
- await expireProject(projectId)
- }
- if (job && job.close) {
- await job.close()
- }
- }
- async function requestProjectExpiry(projectId) {
- logger.debug({ projectId }, 'sending project expire request')
- const url = `${HISTORY_V1_URL}/api/projects/${projectId}/expire`
- const credentials = Buffer.from(
- `staging:${config.get('basicHttpAuth.password')}`
- ).toString('base64')
- await fetchNothing(url, {
- method: 'POST',
- headers: {
- Authorization: `Basic ${credentials}`,
- },
- })
- }
- 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,
- }
- }
|