diff options
Diffstat (limited to 'server/helpers/database-utils.js')
-rw-r--r-- | server/helpers/database-utils.js | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/server/helpers/database-utils.js b/server/helpers/database-utils.js deleted file mode 100644 index c72d19429..000000000 --- a/server/helpers/database-utils.js +++ /dev/null | |||
@@ -1,72 +0,0 @@ | |||
1 | 'use strict' | ||
2 | |||
3 | const retry = require('async/retry') | ||
4 | |||
5 | const db = require('../initializers/database') | ||
6 | const logger = require('./logger') | ||
7 | |||
8 | const utils = { | ||
9 | commitTransaction, | ||
10 | retryTransactionWrapper, | ||
11 | rollbackTransaction, | ||
12 | startSerializableTransaction, | ||
13 | transactionRetryer | ||
14 | } | ||
15 | |||
16 | function commitTransaction (t, callback) { | ||
17 | return t.commit().asCallback(callback) | ||
18 | } | ||
19 | |||
20 | function rollbackTransaction (err, t, callback) { | ||
21 | // Try to rollback transaction | ||
22 | if (t) { | ||
23 | // Do not catch err, report the original one | ||
24 | t.rollback().asCallback(function () { | ||
25 | return callback(err) | ||
26 | }) | ||
27 | } else { | ||
28 | return callback(err) | ||
29 | } | ||
30 | } | ||
31 | |||
32 | // { arguments, errorMessage } | ||
33 | function retryTransactionWrapper (functionToRetry, options, finalCallback) { | ||
34 | const args = options.arguments ? options.arguments : [] | ||
35 | |||
36 | utils.transactionRetryer( | ||
37 | function (callback) { | ||
38 | return functionToRetry.apply(this, args.concat([ callback ])) | ||
39 | }, | ||
40 | function (err) { | ||
41 | if (err) { | ||
42 | logger.error(options.errorMessage, { error: err }) | ||
43 | } | ||
44 | |||
45 | // Do not return the error, continue the process | ||
46 | return finalCallback(null) | ||
47 | } | ||
48 | ) | ||
49 | } | ||
50 | |||
51 | function transactionRetryer (func, callback) { | ||
52 | retry({ | ||
53 | times: 5, | ||
54 | |||
55 | errorFilter: function (err) { | ||
56 | const willRetry = (err.name === 'SequelizeDatabaseError') | ||
57 | logger.debug('Maybe retrying the transaction function.', { willRetry }) | ||
58 | return willRetry | ||
59 | } | ||
60 | }, func, callback) | ||
61 | } | ||
62 | |||
63 | function startSerializableTransaction (callback) { | ||
64 | db.sequelize.transaction({ isolationLevel: 'SERIALIZABLE' }).asCallback(function (err, t) { | ||
65 | // We force to return only two parameters | ||
66 | return callback(err, t) | ||
67 | }) | ||
68 | } | ||
69 | |||
70 | // --------------------------------------------------------------------------- | ||
71 | |||
72 | module.exports = utils | ||