Skip to content

Commit f433ac6

Browse files
authored
fix: use nested transaction in gitConnectOrUpdate and githubNangoConnect (#3477)
1 parent 2b6f2fe commit f433ac6

1 file changed

Lines changed: 20 additions & 7 deletions

File tree

backend/src/services/integrationService.ts

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -252,9 +252,12 @@ export default class IntegrationService {
252252
}
253253

254254
if (IntegrationService.isCodePlatform(platform) && platform !== PlatformType.GIT) {
255-
this.gitConnectOrUpdate({
256-
remotes: repositories,
257-
})
255+
await this.gitConnectOrUpdate(
256+
{
257+
remotes: repositories,
258+
},
259+
txOptions,
260+
)
258261
}
259262

260263
return integration
@@ -833,7 +836,11 @@ export default class IntegrationService {
833836
}
834837

835838
async githubNangoConnect(settings, mapping, integrationId?: string) {
836-
const transaction = await SequelizeRepository.createTransaction(this.options)
839+
const existingTransaction = SequelizeRepository.getTransaction(this.options)
840+
841+
const transaction =
842+
existingTransaction || (await SequelizeRepository.createTransaction(this.options))
843+
837844
const txOptions = {
838845
...this.options,
839846
transaction,
@@ -881,7 +888,9 @@ export default class IntegrationService {
881888
)
882889
}
883890

884-
await SequelizeRepository.commitTransaction(transaction)
891+
if (!existingTransaction) {
892+
await SequelizeRepository.commitTransaction(transaction)
893+
}
885894

886895
await this.options.temporal.workflow.start('syncGithubIntegration', {
887896
taskQueue: 'nango',
@@ -896,7 +905,9 @@ export default class IntegrationService {
896905
return integration
897906
} catch (err) {
898907
this.options.log.error(err, 'Error while creating or updating GitHub integration!')
899-
await SequelizeRepository.rollbackTransaction(transaction)
908+
if (!existingTransaction) {
909+
await SequelizeRepository.rollbackTransaction(transaction)
910+
}
900911
throw err
901912
}
902913
}
@@ -1280,7 +1291,9 @@ export default class IntegrationService {
12801291
return null
12811292
}
12821293

1283-
const existingTransaction = SequelizeRepository.getTransaction(options || this.options)
1294+
const currentOptions = options || this.options
1295+
const existingTransaction =
1296+
currentOptions.transaction || SequelizeRepository.getTransaction(currentOptions)
12841297
const transaction =
12851298
existingTransaction || (await SequelizeRepository.createTransaction(options || this.options))
12861299
let integration

0 commit comments

Comments
 (0)