]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/helpers/utils.js
Server: improve requests scheduler
[github/Chocobozzz/PeerTube.git] / server / helpers / utils.js
index 9f4b145825758c304c4ef1aeb18402d16f90e364..a902850cdd044026247350d479b8de07dd45e51b 100644 (file)
@@ -1,6 +1,7 @@
 'use strict'
 
 const crypto = require('crypto')
+const retry = require('async/retry')
 
 const logger = require('./logger')
 
@@ -9,7 +10,8 @@ const utils = {
   cleanForExit,
   generateRandomString,
   isTestInstance,
-  getFormatedObjects
+  getFormatedObjects,
+  transactionRetryer
 }
 
 function badRequest (req, res, next) {
@@ -46,6 +48,18 @@ function getFormatedObjects (objects, objectsTotal) {
   }
 }
 
+function transactionRetryer (func, callback) {
+  retry({
+    times: 5,
+
+    errorFilter: function (err) {
+      const willRetry = (err.name === 'SequelizeDatabaseError')
+      logger.debug('Maybe retrying the transaction function.', { willRetry })
+      return willRetry
+    }
+  }, func, callback)
+}
+
 // ---------------------------------------------------------------------------
 
 module.exports = utils