X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Fschedulers%2Fremove-dangling-resumable-uploads-scheduler.ts;h=61e93eafa89402d6508b3da15956ce7f2d210da4;hb=6d472b4046084e5f477124b11ac62dca9f6a1a63;hp=d6e561cadffa54ec70e7835e00a5b377c9092064;hpb=390366472d7239864060753c63513d0f316ca468;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/schedulers/remove-dangling-resumable-uploads-scheduler.ts b/server/lib/schedulers/remove-dangling-resumable-uploads-scheduler.ts index d6e561cad..61e93eafa 100644 --- a/server/lib/schedulers/remove-dangling-resumable-uploads-scheduler.ts +++ b/server/lib/schedulers/remove-dangling-resumable-uploads-scheduler.ts @@ -1,9 +1,7 @@ -import { map } from 'bluebird' -import { readdir, remove, stat } from 'fs-extra' + import { logger, loggerTagsFactory } from '@server/helpers/logger' -import { getResumableUploadPath } from '@server/helpers/upload' import { SCHEDULER_INTERVALS_MS } from '@server/initializers/constants' -import { METAFILE_EXTNAME } from '@uploadx/core' +import { uploadx } from '../uploadx' import { AbstractScheduler } from './abstract-scheduler' const lTags = loggerTagsFactory('scheduler', 'resumable-upload', 'cleaner') @@ -22,36 +20,17 @@ export class RemoveDanglingResumableUploadsScheduler extends AbstractScheduler { } protected async internalExecute () { - const path = getResumableUploadPath() - const files = await readdir(path) - - const metafiles = files.filter(f => f.endsWith(METAFILE_EXTNAME)) + logger.debug('Removing dangling resumable uploads', lTags()) - if (metafiles.length === 0) return - - logger.debug('Reading resumable video upload folder %s with %d files', path, metafiles.length, lTags()) + const now = new Date().getTime() try { - await map(metafiles, metafile => { - return this.deleteIfOlderThan(metafile, this.lastExecutionTimeMs) - }, { concurrency: 5 }) + // Remove files that were not updated since the last execution + await uploadx.storage.purge(now - this.lastExecutionTimeMs) } catch (error) { logger.error('Failed to handle file during resumable video upload folder cleanup', { error, ...lTags() }) } finally { - this.lastExecutionTimeMs = new Date().getTime() - } - } - - private async deleteIfOlderThan (metafile: string, olderThan: number) { - const metafilePath = getResumableUploadPath(metafile) - const statResult = await stat(metafilePath) - - // Delete uploads that started since a long time - if (statResult.ctimeMs < olderThan) { - await remove(metafilePath) - - const datafile = metafilePath.replace(new RegExp(`${METAFILE_EXTNAME}$`), '') - await remove(datafile) + this.lastExecutionTimeMs = now } }