mirror of https://github.com/Chocobozzz/PeerTube
Correctly save transaction with retries
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 retryTransactionWrapper(() => {
|
||||||
return sequelizeTypescript.transaction(async transaction => {
|
return sequelizeTypescript.transaction(async transaction => {
|
||||||
|
try {
|
||||||
await model.save({ transaction })
|
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
|
* `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)
|
* `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
|
* `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
|
### Debug server logs
|
||||||
|
|
Loading…
Reference in New Issue