From b37c52fc3ab5369638654046a7f91028b94105ab Mon Sep 17 00:00:00 2001 From: Simon Detheridge Date: Mon, 16 Mar 2020 15:54:05 +0000 Subject: [PATCH] Make GCS delete concurrency configurable --- services/filestore/app/js/GcsPersistor.js | 10 +++++++--- services/filestore/config/settings.defaults.coffee | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) 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']?