]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/helpers/utils.js
Server: retryer transaction wrapper refractoring
[github/Chocobozzz/PeerTube.git] / server / helpers / utils.js
index a902850cdd044026247350d479b8de07dd45e51b..fb4dd08cc6df36e2f97676fbb5c04723fdb78741 100644 (file)
@@ -11,6 +11,7 @@ const utils = {
   generateRandomString,
   isTestInstance,
   getFormatedObjects,
+  retryWrapper,
   transactionRetryer
 }
 
@@ -48,6 +49,25 @@ function getFormatedObjects (objects, objectsTotal) {
   }
 }
 
+// { arguments, errorMessage }
+function retryWrapper (functionToRetry, options, finalCallback) {
+  const args = options.arguments ? options.arguments : []
+
+  utils.transactionRetryer(
+    function (callback) {
+      return functionToRetry.apply(this, args.concat([ callback ]))
+    },
+    function (err) {
+      if (err) {
+        logger.error(options.errorMessage, { error: err })
+      }
+
+      // Do not return the error, continue the process
+      return finalCallback(null)
+    }
+  )
+}
+
 function transactionRetryer (func, callback) {
   retry({
     times: 5,