Explorar o código

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.
Eric Mc Sween %!s(int64=6) %!d(string=hai) anos
pai
achega
0fdfa706f7
Modificáronse 1 ficheiros con 9 adicións e 5 borrados
  1. 9 5
      libraries/object-persistor/src/GcsPersistor.js

+ 9 - 5
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
-      }
     }
   }