Procházet zdrojové kódy

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 před 6 roky
rodič
revize
0fdfa706f7
1 změnil soubory, kde provedl 9 přidání a 5 odebrání
  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) {
       if (this.settings.unlockBeforeDelete) {
         await file.setMetadata({ eventBasedHold: false })
         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) {
     } catch (err) {
-      const error = PersistorHelper.wrapError(
+      throw PersistorHelper.wrapError(
         err,
         err,
         'error deleting GCS object',
         'error deleting GCS object',
         { bucketName, key },
         { bucketName, key },
         WriteError
         WriteError
       )
       )
-      if (!(error instanceof NotFoundError)) {
-        throw error
-      }
     }
     }
   }
   }