diff options
| -rw-r--r-- | routes/bitcoin/receive.js | 10 | ||||
| -rw-r--r-- | routes/liquid/receive.js | 10 |
2 files changed, 14 insertions, 6 deletions
diff --git a/routes/bitcoin/receive.js b/routes/bitcoin/receive.js index 0593584e..630da221 100644 --- a/routes/bitcoin/receive.js +++ b/routes/bitcoin/receive.js @@ -133,6 +133,7 @@ setInterval(async () => { for (let i = 0; i < arr.length; i++) { const hash = arr[i]; + await db.transaction(async (transaction) => { const p = await db.Payment.findOne({ where: { hash, confirmed: 0, received: 1 }, include: [ @@ -144,7 +145,9 @@ setInterval(async () => { model: db.User, as: "user" } - ] + ], + lock: transaction.LOCK.UPDATE, + transaction, }); const { user } = p; @@ -156,8 +159,8 @@ setInterval(async () => { p.account.balance += total; p.account.pending -= Math.min(p.account.pending, total); - await p.account.save(); - await p.save(); + await p.account.save({ transaction }); + await p.save({ transaction }); emit(user.username, "account", p.account); emit(user.username, "payment", p); @@ -168,6 +171,7 @@ setInterval(async () => { } delete queue[hash]; + }); } } catch (e) { l.error("problem processing queued bitcoin transaction", e.message); diff --git a/routes/liquid/receive.js b/routes/liquid/receive.js index 9a97aa47..2aadb43e 100644 --- a/routes/liquid/receive.js +++ b/routes/liquid/receive.js @@ -215,6 +215,7 @@ setInterval(async () => { for (let i = 0; i < arr.length; i++) { const hash = arr[i]; + await db.transaction(async (transaction) => { const p = await db.Payment.findOne({ where: { hash, confirmed: 0, received: 1 }, include: [ @@ -226,7 +227,9 @@ setInterval(async () => { model: db.User, as: "user" } - ] + ], + lock: transaction.LOCK.UPDATE, + transaction, }); const { user } = p; @@ -237,8 +240,8 @@ setInterval(async () => { p.account.balance += total; p.account.pending -= Math.min(p.account.pending, total); - await p.account.save(); - await p.save(); + await p.account.save({ transaction }); + await p.save({ transaction }); emit(user.username, "account", p.account); emit(user.username, "payment", p); @@ -256,6 +259,7 @@ setInterval(async () => { } delete queue[hash]; + }); } } catch (e) { l.error("problem processing queued liquid transaction", e.message); |
