Fix reset sequelize instance
This commit is contained in:
parent
81f14b9112
commit
823c34c07f
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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',
|
||||||
|
|
Loading…
Reference in New Issue