From 66ff456bf25a334dba109c5bba96577531388660 Mon Sep 17 00:00:00 2001 From: boufni95 Date: Thu, 8 Aug 2024 16:28:23 +0200 Subject: [PATCH] fix broken migration --- src/services/lnd/lnd.ts | 3 +++ src/services/main/init.ts | 4 ++-- src/services/main/paymentManager.ts | 20 ++++++++++--------- src/services/main/watchdog.ts | 2 +- .../storage/entity/UserInvoicePayment.ts | 2 +- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/services/lnd/lnd.ts b/src/services/lnd/lnd.ts index e5a1c20c..c293bdb6 100644 --- a/src/services/lnd/lnd.ts +++ b/src/services/lnd/lnd.ts @@ -433,6 +433,9 @@ export default class { } async GetPayment(paymentIndex: number) { + if (paymentIndex === 0) { + throw new Error("payment index starts from 1") + } const indexOffset = BigInt(paymentIndex - 1) const res = await this.lightning.listPayments({ countTotalPayments: false, includeIncomplete: true, indexOffset, maxPayments: 1n, reversed: false diff --git a/src/services/main/init.ts b/src/services/main/init.ts index 45f643b5..91534b15 100644 --- a/src/services/main/init.ts +++ b/src/services/main/init.ts @@ -72,8 +72,8 @@ export const initMainHandler = async (log: PubLogger, mainSettings: MainSettings if (stop) { return } - mainHandler.paymentManager.checkPendingPayments() - mainHandler.paymentManager.watchDog.Start() + await mainHandler.paymentManager.checkPendingPayments() + await mainHandler.paymentManager.watchDog.Start() return { mainHandler, apps, liquidityProviderInfo, liquidityProviderApp, wizard, adminManager } } diff --git a/src/services/main/paymentManager.ts b/src/services/main/paymentManager.ts index 52638cc8..9052c8f9 100644 --- a/src/services/main/paymentManager.ts +++ b/src/services/main/paymentManager.ts @@ -123,17 +123,19 @@ export default class { } checkPendingLndPayment = async (log: PubLogger, p: UserInvoicePayment) => { - if (p.paymentIndex === 0) { - const fullAmount = p.paid_amount + p.service_fees + p.routing_fees - log("found a pending payment with no payment index, refunding", fullAmount, "sats to user", p.user.user_id) - await this.storage.txQueue.PushToQueue({ - dbTx: true, description: "refund failed pending payment", exec: async tx => { - await this.storage.userStorage.IncrementUserBalance(p.user.user_id, fullAmount, "payment_refund:" + p.invoice, tx) - await this.storage.paymentStorage.UpdateExternalPayment(p.serial_id, 0, 0, false) - } - }) + if (p.paymentIndex === 0 || p.paymentIndex === -1) { + log("found a pending payment with no payment index, skipping", p.serial_id) + //const fullAmount = p.paid_amount + p.service_fees + p.routing_fees + //log("found a pending payment with no payment index, refunding", fullAmount, "sats to user", p.user.user_id) + //await this.storage.txQueue.PushToQueue({ + // dbTx: true, description: "refund failed pending payment", exec: async tx => { + // await this.storage.userStorage.IncrementUserBalance(p.user.user_id, fullAmount, "payment_refund:" + p.invoice, tx) + // await this.storage.paymentStorage.UpdateExternalPayment(p.serial_id, 0, 0, false) + // } + //}) return } + console.log({p}) const paymentRes = await this.lnd.GetPayment(p.paymentIndex) const payment = paymentRes.payments[0] if (!payment || Number(payment.paymentIndex) !== p.paymentIndex) { diff --git a/src/services/main/watchdog.ts b/src/services/main/watchdog.ts index 8765290e..1769d415 100644 --- a/src/services/main/watchdog.ts +++ b/src/services/main/watchdog.ts @@ -75,7 +75,7 @@ export class Watchdog { this.latestHtlcIndexOffset = fwEvents.lastOffsetIndex this.accumulatedHtlcFees = 0 const paymentFound = await this.storage.paymentStorage.GetMaxPaymentIndex() - const knownMaxIndex = paymentFound.length > 0 ? paymentFound[0].paymentIndex : 0 + const knownMaxIndex = paymentFound.length > 0 ? Math.max(paymentFound[0].paymentIndex,0) : 0 this.latestPaymentIndexOffset = await this.lnd.GetLatestPaymentIndex(knownMaxIndex) const other = { ilnd: this.initialLndBalance, hf: this.accumulatedHtlcFees, iu: this.initialUsersBalance, tu: totalUsersBalance, oext: otherExternal } getLogger({ component: 'watchdog_debug2' })(JSON.stringify({ deltaLnd: 0, deltaUsers: 0, totalExternal, latestIndex: this.latestPaymentIndexOffset, other })) diff --git a/src/services/storage/entity/UserInvoicePayment.ts b/src/services/storage/entity/UserInvoicePayment.ts index a3b28baf..3b1bdea3 100644 --- a/src/services/storage/entity/UserInvoicePayment.ts +++ b/src/services/storage/entity/UserInvoicePayment.ts @@ -40,7 +40,7 @@ export class UserInvoicePayment { liquidityProvider?: string @Column({ - default: 0, + default: -1, }) paymentIndex: number