diff --git a/services/filestore/app/js/GcsPersistor.js b/services/filestore/app/js/GcsPersistor.js index ddaf37d42d..a78bfce2cd 100644 --- a/services/filestore/app/js/GcsPersistor.js +++ b/services/filestore/app/js/GcsPersistor.js @@ -209,9 +209,13 @@ async function deleteDirectory(bucketName, key) { .bucket(bucketName) .getFiles({ directory: key }) - await asyncPool(50, files, async file => { - await deleteFile(bucketName, file.name) - }) + await asyncPool( + settings.filestore.gcs.deleteConcurrency, + files, + async file => { + await deleteFile(bucketName, file.name) + } + ) } catch (err) { const error = PersistorHelper.wrapError( err, diff --git a/services/filestore/config/settings.defaults.coffee b/services/filestore/config/settings.defaults.coffee index 6b5238e552..6867945d10 100644 --- a/services/filestore/config/settings.defaults.coffee +++ b/services/filestore/config/settings.defaults.coffee @@ -42,6 +42,7 @@ settings = projectId: process.env['GCS_PROJECT_ID'] unlockBeforeDelete: process.env['GCS_UNLOCK_BEFORE_DELETE'] == "true" # unlock an event-based hold before deleting. default false deletedBucketSuffix: process.env['GCS_DELETED_BUCKET_SUFFIX'] # if present, copy file to another bucket on delete. default null + deleteConcurrency: parseInt(process.env['GCS_DELETE_CONCURRENCY']) || 50 s3: if process.env['AWS_ACCESS_KEY_ID']? or process.env['S3_BUCKET_CREDENTIALS']?