Просмотр исходного кода

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 6 лет назад
Родитель
Сommit
0fdfa706f7
1 измененных файлов с 9 добавлено и 5 удалено
  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
-      }
     }
     }
   }
   }