diff options
author | Chocobozzz <me@florianbigard.com> | 2023-02-14 08:59:27 +0100 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2023-02-14 09:03:22 +0100 |
commit | 4565774669bc3c1b11cc726d577946953dbe53c5 (patch) | |
tree | ee0e41e06245861a0de896684caa388f82cc3470 /server/controllers/api | |
parent | 4c61660a0ab6224079c67d8282b282772a0772e4 (diff) | |
download | PeerTube-4565774669bc3c1b11cc726d577946953dbe53c5.tar.gz PeerTube-4565774669bc3c1b11cc726d577946953dbe53c5.tar.zst PeerTube-4565774669bc3c1b11cc726d577946953dbe53c5.zip |
Fix retrying update on sql serialization conflict
Diffstat (limited to 'server/controllers/api')
-rw-r--r-- | server/controllers/api/video-channel.ts | 6 | ||||
-rw-r--r-- | server/controllers/api/video-playlist.ts | 6 | ||||
-rw-r--r-- | server/controllers/api/videos/update.ts | 6 |
3 files changed, 6 insertions, 12 deletions
diff --git a/server/controllers/api/video-channel.ts b/server/controllers/api/video-channel.ts index d7c92952a..5b9fb794a 100644 --- a/server/controllers/api/video-channel.ts +++ b/server/controllers/api/video-channel.ts | |||
@@ -273,7 +273,6 @@ async function addVideoChannel (req: express.Request, res: express.Response) { | |||
273 | 273 | ||
274 | async function updateVideoChannel (req: express.Request, res: express.Response) { | 274 | async function updateVideoChannel (req: express.Request, res: express.Response) { |
275 | const videoChannelInstance = res.locals.videoChannel | 275 | const videoChannelInstance = res.locals.videoChannel |
276 | const videoChannelFieldsSave = videoChannelInstance.toJSON() | ||
277 | const oldVideoChannelAuditKeys = new VideoChannelAuditView(videoChannelInstance.toFormattedJSON()) | 276 | const oldVideoChannelAuditKeys = new VideoChannelAuditView(videoChannelInstance.toFormattedJSON()) |
278 | const videoChannelInfoToUpdate = req.body as VideoChannelUpdate | 277 | const videoChannelInfoToUpdate = req.body as VideoChannelUpdate |
279 | let doBulkVideoUpdate = false | 278 | let doBulkVideoUpdate = false |
@@ -309,10 +308,9 @@ async function updateVideoChannel (req: express.Request, res: express.Response) | |||
309 | } catch (err) { | 308 | } catch (err) { |
310 | logger.debug('Cannot update the video channel.', { err }) | 309 | logger.debug('Cannot update the video channel.', { err }) |
311 | 310 | ||
312 | // Force fields we want to update | ||
313 | // If the transaction is retried, sequelize will think the object has not changed | 311 | // If the transaction is retried, sequelize will think the object has not changed |
314 | // So it will skip the SQL request, even if the last one was ROLLBACKed! | 312 | // So we need to restore the previous fields |
315 | resetSequelizeInstance(videoChannelInstance, videoChannelFieldsSave) | 313 | resetSequelizeInstance(videoChannelInstance) |
316 | 314 | ||
317 | throw err | 315 | throw err |
318 | } | 316 | } |
diff --git a/server/controllers/api/video-playlist.ts b/server/controllers/api/video-playlist.ts index 947f7ca77..bcb60e265 100644 --- a/server/controllers/api/video-playlist.ts +++ b/server/controllers/api/video-playlist.ts | |||
@@ -210,7 +210,6 @@ async function addVideoPlaylist (req: express.Request, res: express.Response) { | |||
210 | 210 | ||
211 | async function updateVideoPlaylist (req: express.Request, res: express.Response) { | 211 | async function updateVideoPlaylist (req: express.Request, res: express.Response) { |
212 | const videoPlaylistInstance = res.locals.videoPlaylistFull | 212 | const videoPlaylistInstance = res.locals.videoPlaylistFull |
213 | const videoPlaylistFieldsSave = videoPlaylistInstance.toJSON() | ||
214 | const videoPlaylistInfoToUpdate = req.body as VideoPlaylistUpdate | 213 | const videoPlaylistInfoToUpdate = req.body as VideoPlaylistUpdate |
215 | 214 | ||
216 | const wasPrivatePlaylist = videoPlaylistInstance.privacy === VideoPlaylistPrivacy.PRIVATE | 215 | const wasPrivatePlaylist = videoPlaylistInstance.privacy === VideoPlaylistPrivacy.PRIVATE |
@@ -275,10 +274,9 @@ async function updateVideoPlaylist (req: express.Request, res: express.Response) | |||
275 | } catch (err) { | 274 | } catch (err) { |
276 | logger.debug('Cannot update the video playlist.', { err }) | 275 | logger.debug('Cannot update the video playlist.', { err }) |
277 | 276 | ||
278 | // Force fields we want to update | ||
279 | // If the transaction is retried, sequelize will think the object has not changed | 277 | // If the transaction is retried, sequelize will think the object has not changed |
280 | // So it will skip the SQL request, even if the last one was ROLLBACKed! | 278 | // So we need to restore the previous fields |
281 | resetSequelizeInstance(videoPlaylistInstance, videoPlaylistFieldsSave) | 279 | resetSequelizeInstance(videoPlaylistInstance) |
282 | 280 | ||
283 | throw err | 281 | throw err |
284 | } | 282 | } |
diff --git a/server/controllers/api/videos/update.ts b/server/controllers/api/videos/update.ts index 260dee2b9..e6197c4b1 100644 --- a/server/controllers/api/videos/update.ts +++ b/server/controllers/api/videos/update.ts | |||
@@ -45,7 +45,6 @@ export { | |||
45 | 45 | ||
46 | async function updateVideo (req: express.Request, res: express.Response) { | 46 | async function updateVideo (req: express.Request, res: express.Response) { |
47 | const videoFromReq = res.locals.videoAll | 47 | const videoFromReq = res.locals.videoAll |
48 | const videoFieldsSave = videoFromReq.toJSON() | ||
49 | const oldVideoAuditView = new VideoAuditView(videoFromReq.toFormattedDetailsJSON()) | 48 | const oldVideoAuditView = new VideoAuditView(videoFromReq.toFormattedDetailsJSON()) |
50 | const videoInfoToUpdate: VideoUpdate = req.body | 49 | const videoInfoToUpdate: VideoUpdate = req.body |
51 | 50 | ||
@@ -151,10 +150,9 @@ async function updateVideo (req: express.Request, res: express.Response) { | |||
151 | isNewVideo | 150 | isNewVideo |
152 | }) | 151 | }) |
153 | } catch (err) { | 152 | } catch (err) { |
154 | // Force fields we want to update | ||
155 | // If the transaction is retried, sequelize will think the object has not changed | 153 | // If the transaction is retried, sequelize will think the object has not changed |
156 | // So it will skip the SQL request, even if the last one was ROLLBACKed! | 154 | // So we need to restore the previous fields |
157 | resetSequelizeInstance(videoFromReq, videoFieldsSave) | 155 | resetSequelizeInstance(videoFromReq) |
158 | 156 | ||
159 | throw err | 157 | throw err |
160 | } finally { | 158 | } finally { |