Merge branch 'semaphore' into test-semaphore

This commit is contained in:
Ulf Gebhardt 2022-12-15 23:08:31 +01:00
commit ba2ad05088
Signed by: ulfgebhardt
GPG Key ID: DA6B843E748679C9
3 changed files with 8 additions and 2 deletions

View File

@ -584,6 +584,7 @@ export class ContributionResolver {
// acquire lock // acquire lock
const releaseLock = await TRANSACTIONS_LOCK.acquire() const releaseLock = await TRANSACTIONS_LOCK.acquire()
console.log(`locked for confirmContribution ${id}`)
const queryRunner = getConnection().createQueryRunner() const queryRunner = getConnection().createQueryRunner()
await queryRunner.connect() await queryRunner.connect()
await queryRunner.startTransaction('REPEATABLE READ') // 'READ COMMITTED') await queryRunner.startTransaction('REPEATABLE READ') // 'READ COMMITTED')
@ -593,7 +594,7 @@ export class ContributionResolver {
.select('transaction') .select('transaction')
.from(DbTransaction, 'transaction') .from(DbTransaction, 'transaction')
.where('transaction.userId = :id', { id: contribution.userId }) .where('transaction.userId = :id', { id: contribution.userId })
.orderBy('transaction.balanceDate', 'DESC') .orderBy('transaction.id', 'DESC')
.getOne() .getOne()
logger.info('lastTransaction ID', lastTransaction ? lastTransaction.id : 'undefined') logger.info('lastTransaction ID', lastTransaction ? lastTransaction.id : 'undefined')
@ -642,10 +643,11 @@ export class ContributionResolver {
}) })
} catch (e) { } catch (e) {
await queryRunner.rollbackTransaction() await queryRunner.rollbackTransaction()
logger.error(`Creation was not successful: ${e}`) console.log(`Creation was not successful:`, e)
throw new Error(`Creation was not successful.`) throw new Error(`Creation was not successful.`)
} finally { } finally {
await queryRunner.release() await queryRunner.release()
console.log(`release for confirmContribution ${id}`)
releaseLock() releaseLock()
} }

View File

@ -171,6 +171,7 @@ export class TransactionLinkResolver {
if (code.match(/^CL-/)) { if (code.match(/^CL-/)) {
// acquire lock // acquire lock
const releaseLock = await TRANSACTIONS_LOCK.acquire() const releaseLock = await TRANSACTIONS_LOCK.acquire()
console.log(`locked for redeemTransactionLink ${code}`)
logger.info('redeem contribution link...') logger.info('redeem contribution link...')
const queryRunner = getConnection().createQueryRunner() const queryRunner = getConnection().createQueryRunner()
await queryRunner.connect() await queryRunner.connect()
@ -312,6 +313,7 @@ export class TransactionLinkResolver {
throw new Error(`Creation from contribution link was not successful. ${e}`) throw new Error(`Creation from contribution link was not successful. ${e}`)
} finally { } finally {
await queryRunner.release() await queryRunner.release()
console.log(`release for redeemTransactionLink ${code}`)
releaseLock() releaseLock()
} }
return true return true

View File

@ -66,6 +66,7 @@ export const executeTransaction = async (
// acquire lock // acquire lock
const releaseLock = await TRANSACTIONS_LOCK.acquire() const releaseLock = await TRANSACTIONS_LOCK.acquire()
console.log(`locked for executeTransaction ${amount.toString()} ${recipient.firstName}`)
try { try {
// validate amount // validate amount
@ -189,6 +190,7 @@ export const executeTransaction = async (
logger.info(`finished executeTransaction successfully`) logger.info(`finished executeTransaction successfully`)
return true return true
} finally { } finally {
console.log(`release for executeTransaction ${amount.toString()} ${recipient.firstName}`)
releaseLock() releaseLock()
} }
} }