From 0fdfa706f7d800ac92fe2ae5843184ce64a53ac1 Mon Sep 17 00:00:00 2001 From: Eric Mc Sween Date: Thu, 15 Oct 2020 10:35:52 -0400 Subject: [PATCH] Make 404 error handling on deletes more specific The GCS persistor error handler ignores 404 errors on deletes. However, the net is too wide cast, and 404 errors coming from the dual-bucket lifecycle mechanism are also ignored. --- libraries/object-persistor/src/GcsPersistor.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/libraries/object-persistor/src/GcsPersistor.js b/libraries/object-persistor/src/GcsPersistor.js index a6a5e60186..e8181c7e62 100644 --- a/libraries/object-persistor/src/GcsPersistor.js +++ b/libraries/object-persistor/src/GcsPersistor.js @@ -200,17 +200,21 @@ module.exports = class GcsPersistor extends AbstractPersistor { if (this.settings.unlockBeforeDelete) { await file.setMetadata({ eventBasedHold: false }) } - await file.delete() + try { + await file.delete() + } catch (err) { + // ignore 404s: it's fine if the file doesn't exist. + if (err.code !== 404) { + throw err + } + } } catch (err) { - const error = PersistorHelper.wrapError( + throw PersistorHelper.wrapError( err, 'error deleting GCS object', { bucketName, key }, WriteError ) - if (!(error instanceof NotFoundError)) { - throw error - } } }