aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/controllers/api
diff options
context:
space:
mode:
authorChocobozzz <florian.bigard@gmail.com>2017-01-15 19:13:16 +0100
committerChocobozzz <florian.bigard@gmail.com>2017-01-15 19:13:16 +0100
commitd6a5b018b89f9d2569ca7435b0e270095c93cc17 (patch)
treec7f24df4853ad2de7934dfa926ef915222a38277 /server/controllers/api
parenta7721e62c028f54c1d165b53ac1a7a60b6c3b82e (diff)
downloadPeerTube-d6a5b018b89f9d2569ca7435b0e270095c93cc17.tar.gz
PeerTube-d6a5b018b89f9d2569ca7435b0e270095c93cc17.tar.zst
PeerTube-d6a5b018b89f9d2569ca7435b0e270095c93cc17.zip
Server: retryer transaction wrapper refractoring
Diffstat (limited to 'server/controllers/api')
-rw-r--r--server/controllers/api/remote/videos.js34
-rw-r--r--server/controllers/api/videos.js46
2 files changed, 30 insertions, 50 deletions
diff --git a/server/controllers/api/remote/videos.js b/server/controllers/api/remote/videos.js
index c45a86dbb..9d007246f 100644
--- a/server/controllers/api/remote/videos.js
+++ b/server/controllers/api/remote/videos.js
@@ -66,19 +66,12 @@ function remoteVideos (req, res, next) {
66 66
67// Handle retries on fail 67// Handle retries on fail
68function addRemoteVideoRetryWrapper (videoToCreateData, fromPod, finalCallback) { 68function addRemoteVideoRetryWrapper (videoToCreateData, fromPod, finalCallback) {
69 utils.transactionRetryer( 69 const options = {
70 function (callback) { 70 arguments: [ videoToCreateData, fromPod ],
71 return addRemoteVideo(videoToCreateData, fromPod, callback) 71 errorMessage: 'Cannot insert the remote video with many retries.'
72 }, 72 }
73 function (err) {
74 if (err) {
75 logger.error('Cannot insert the remote video with many retries.', { error: err })
76 }
77 73
78 // Do not return the error, continue the process 74 utils.retryWrapper(addRemoteVideo, options, finalCallback)
79 return finalCallback(null)
80 }
81 )
82} 75}
83 76
84function addRemoteVideo (videoToCreateData, fromPod, finalCallback) { 77function addRemoteVideo (videoToCreateData, fromPod, finalCallback) {
@@ -182,19 +175,12 @@ function addRemoteVideo (videoToCreateData, fromPod, finalCallback) {
182 175
183// Handle retries on fail 176// Handle retries on fail
184function updateRemoteVideoRetryWrapper (videoAttributesToUpdate, fromPod, finalCallback) { 177function updateRemoteVideoRetryWrapper (videoAttributesToUpdate, fromPod, finalCallback) {
185 utils.transactionRetryer( 178 const options = {
186 function (callback) { 179 arguments: [ fromPod, videoAttributesToUpdate ],
187 return updateRemoteVideo(videoAttributesToUpdate, fromPod, callback) 180 errorMessage: 'Cannot update the remote video with many retries'
188 }, 181 }
189 function (err) {
190 if (err) {
191 logger.error('Cannot update the remote video with many retries.', { error: err })
192 }
193 182
194 // Do not return the error, continue the process 183 utils.retryWrapper(updateRemoteVideo, options, finalCallback)
195 return finalCallback(null)
196 }
197 )
198} 184}
199 185
200function updateRemoteVideo (videoAttributesToUpdate, fromPod, finalCallback) { 186function updateRemoteVideo (videoAttributesToUpdate, fromPod, finalCallback) {
diff --git a/server/controllers/api/videos.js b/server/controllers/api/videos.js
index 2c4af520e..9a50a29be 100644
--- a/server/controllers/api/videos.js
+++ b/server/controllers/api/videos.js
@@ -106,20 +106,17 @@ module.exports = router
106// Wrapper to video add that retry the function if there is a database error 106// Wrapper to video add that retry the function if there is a database error
107// We need this because we run the transaction in SERIALIZABLE isolation that can fail 107// We need this because we run the transaction in SERIALIZABLE isolation that can fail
108function addVideoRetryWrapper (req, res, next) { 108function addVideoRetryWrapper (req, res, next) {
109 utils.transactionRetryer( 109 const options = {
110 function (callback) { 110 arguments: [ req, res, req.files.videofile[0] ],
111 return addVideo(req, res, req.files.videofile[0], callback) 111 errorMessage: 'Cannot insert the video with many retries.'
112 }, 112 }
113 function (err) {
114 if (err) {
115 logger.error('Cannot insert the video with many retries.', { error: err })
116 return next(err)
117 }
118 113
119 // TODO : include Location of the new video -> 201 114 utils.retryWrapper(addVideo, options, function (err) {
120 return res.type('json').status(204).end() 115 if (err) return next(err)
121 } 116
122 ) 117 // TODO : include Location of the new video -> 201
118 return res.type('json').status(204).end()
119 })
123} 120}
124 121
125function addVideo (req, res, videoFile, callback) { 122function addVideo (req, res, videoFile, callback) {
@@ -241,20 +238,17 @@ function addVideo (req, res, videoFile, callback) {
241} 238}
242 239
243function updateVideoRetryWrapper (req, res, next) { 240function updateVideoRetryWrapper (req, res, next) {
244 utils.transactionRetryer( 241 const options = {
245 function (callback) { 242 arguments: [ req, res ],
246 return updateVideo(req, res, callback) 243 errorMessage: 'Cannot update the video with many retries.'
247 }, 244 }
248 function (err) {
249 if (err) {
250 logger.error('Cannot update the video with many retries.', { error: err })
251 return next(err)
252 }
253 245
254 // TODO : include Location of the new video -> 201 246 utils.retryWrapper(updateVideo, options, function (err) {
255 return res.type('json').status(204).end() 247 if (err) return next(err)
256 } 248
257 ) 249 // TODO : include Location of the new video -> 201
250 return res.type('json').status(204).end()
251 })
258} 252}
259 253
260function updateVideo (req, res, finalCallback) { 254function updateVideo (req, res, finalCallback) {