Fix reset sequelize instance

This commit is contained in:
Chocobozzz 2023-05-11 15:02:53 +02:00
parent 81f14b9112
commit 823c34c07f
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
8 changed files with 13 additions and 23 deletions

View File

@ -310,7 +310,7 @@ async function updateVideoChannel (req: express.Request, res: express.Response)
// If the transaction is retried, sequelize will think the object has not changed // If the transaction is retried, sequelize will think the object has not changed
// So we need to restore the previous fields // So we need to restore the previous fields
resetSequelizeInstance(videoChannelInstance) await resetSequelizeInstance(videoChannelInstance)
throw err throw err
} }

View File

@ -276,7 +276,7 @@ async function updateVideoPlaylist (req: express.Request, res: express.Response)
// If the transaction is retried, sequelize will think the object has not changed // If the transaction is retried, sequelize will think the object has not changed
// So we need to restore the previous fields // So we need to restore the previous fields
resetSequelizeInstance(videoPlaylistInstance) await resetSequelizeInstance(videoPlaylistInstance)
throw err throw err
} }

View File

@ -152,7 +152,7 @@ async function updateVideo (req: express.Request, res: express.Response) {
} catch (err) { } catch (err) {
// If the transaction is retried, sequelize will think the object has not changed // If the transaction is retried, sequelize will think the object has not changed
// So we need to restore the previous fields // So we need to restore the previous fields
resetSequelizeInstance(videoFromReq) await resetSequelizeInstance(videoFromReq)
throw err throw err
} finally { } finally {

View File

@ -70,16 +70,8 @@ function transactionRetryer <T> (func: (err: any, data: T) => any) {
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
function updateInstanceWithAnother <M, T extends U, U extends Model<M>> (instanceToUpdate: T, baseInstance: U) {
const obj = baseInstance.toJSON()
for (const key of Object.keys(obj)) {
instanceToUpdate[key] = obj[key]
}
}
function resetSequelizeInstance <T> (instance: Model<T>) { function resetSequelizeInstance <T> (instance: Model<T>) {
instance.set(instance.previous()) return instance.reload()
} }
function filterNonExistingModels <T extends { hasSameUniqueKeysThan (other: T): boolean }> ( function filterNonExistingModels <T extends { hasSameUniqueKeysThan (other: T): boolean }> (
@ -113,7 +105,6 @@ export {
resetSequelizeInstance, resetSequelizeInstance,
retryTransactionWrapper, retryTransactionWrapper,
transactionRetryer, transactionRetryer,
updateInstanceWithAnother,
afterCommitIfTransaction, afterCommitIfTransaction,
filterNonExistingModels, filterNonExistingModels,
deleteAllModels, deleteAllModels,

View File

@ -52,11 +52,11 @@ export class APActorUpdater {
logger.info('Remote account %s updated', this.actorObject.url) logger.info('Remote account %s updated', this.actorObject.url)
} catch (err) { } catch (err) {
if (this.actor !== undefined) { if (this.actor !== undefined) {
resetSequelizeInstance(this.actor) await resetSequelizeInstance(this.actor)
} }
if (this.accountOrChannel !== undefined) { if (this.accountOrChannel !== undefined) {
resetSequelizeInstance(this.accountOrChannel) await resetSequelizeInstance(this.accountOrChannel)
} }
// This is just a debug because we will retry the insert // This is just a debug because we will retry the insert

View File

@ -88,7 +88,7 @@ export class APVideoUpdater extends APVideoAbstractBuilder {
return videoUpdated return videoUpdated
} catch (err) { } catch (err) {
this.catchUpdateError(err) await this.catchUpdateError(err)
} }
} }
@ -154,9 +154,9 @@ export class APVideoUpdater extends APVideoAbstractBuilder {
videoUpdated.VideoLive = null videoUpdated.VideoLive = null
} }
private catchUpdateError (err: Error) { private async catchUpdateError (err: Error) {
if (this.video !== undefined) { if (this.video !== undefined) {
resetSequelizeInstance(this.video) await resetSequelizeInstance(this.video)
} }
// This is just a debug because we will retry the insert // This is just a debug because we will retry the insert

View File

@ -2,11 +2,10 @@
import { expect } from 'chai' import { expect } from 'chai'
import { wait } from '@shared/core-utils' import { wait } from '@shared/core-utils'
import { HttpStatusCode, LiveVideoCreate, VideoPrivacy } from '@shared/models' import { LiveVideoCreate, VideoPrivacy } from '@shared/models'
import { import {
cleanupTests, cleanupTests,
createSingleServer, createSingleServer,
makeRawRequest,
PeerTubeServer, PeerTubeServer,
setAccessTokensToServers, setAccessTokensToServers,
setDefaultVideoChannel, setDefaultVideoChannel,
@ -81,8 +80,8 @@ describe('Fast restream in live', function () {
try { try {
await server.live.getSegmentFile({ videoUUID: liveId, segment: 0, playlistNumber: 0 }) await server.live.getSegmentFile({ videoUUID: liveId, segment: 0, playlistNumber: 0 })
await makeRawRequest({ url: video.streamingPlaylists[0].playlistUrl, expectedStatus: HttpStatusCode.OK_200 }) await server.streamingPlaylists.get({ url: video.streamingPlaylists[0].playlistUrl })
await makeRawRequest({ url: video.streamingPlaylists[0].segmentsSha256Url, expectedStatus: HttpStatusCode.OK_200 }) await server.streamingPlaylists.getSegmentSha256({ url: video.streamingPlaylists[0].segmentsSha256Url })
} catch (err) { } catch (err) {
// FIXME: try to debug error in CI "Unexpected end of JSON input" // FIXME: try to debug error in CI "Unexpected end of JSON input"
console.error(err) console.error(err)

View File

@ -213,7 +213,7 @@ describe('Test a single server', function () {
}) })
it('Should upload 6 videos', async function () { it('Should upload 6 videos', async function () {
this.timeout(25000) this.timeout(50000)
const videos = new Set([ const videos = new Set([
'video_short.mp4', 'video_short.ogv', 'video_short.webm', 'video_short.mp4', 'video_short.ogv', 'video_short.webm',