Correctly save transaction with retries
This commit is contained in:
parent
fbee171a0b
commit
89e3951587
|
@ -68,10 +68,20 @@ function transactionRetryer <T> (func: (err: any, data: T) => any) {
|
|||
})
|
||||
}
|
||||
|
||||
function saveInTransactionWithRetries <T extends Pick<Model, 'save'>> (model: T) {
|
||||
function saveInTransactionWithRetries <T extends Pick<Model, 'save' | 'changed'>> (model: T) {
|
||||
const changedKeys = model.changed()
|
||||
if (!changedKeys) throw new Error('No changed keys found')
|
||||
|
||||
return retryTransactionWrapper(() => {
|
||||
return sequelizeTypescript.transaction(async transaction => {
|
||||
try {
|
||||
await model.save({ transaction })
|
||||
} catch {
|
||||
// Reinit changed keys
|
||||
for (const key of changedKeys) {
|
||||
model.changed(key as keyof Model, true)
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
|
|
@ -75,6 +75,7 @@ Some env variables can be defined to disable/enable some tests:
|
|||
* `AKISMET_KEY`: specify an Akismet key to test akismet external PeerTube plugin
|
||||
* `OBJECT_STORAGE_SCALEWAY_KEY_ID` and `OBJECT_STORAGE_SCALEWAY_ACCESS_KEY`: specify Scaleway API keys to test object storage ACL (not supported by our `chocobozzz/s3-ninja` container)
|
||||
* `ENABLE_FFMPEG_THUMBNAIL_PIXEL_COMPARISON_TESTS=true`: enable pixel comparison on images generated by ffmpeg. Disabled by default because a custom ffmpeg version may fails the tests
|
||||
* `YOUTUBE_DL_DOWNLOAD_BEARER_TOKEN`: Bearer token to download youtube-dl binary
|
||||
|
||||
|
||||
### Debug server logs
|
||||
|
|
Loading…
Reference in New Issue