Skip to content

Commit

Permalink
chore: include swap id in invoice payment tracking logs (#589)
Browse files Browse the repository at this point in the history
  • Loading branch information
michael1011 authored Jul 2, 2024
1 parent 2b9a4e8 commit e52efbf
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 16 deletions.
21 changes: 14 additions & 7 deletions lib/lightning/PendingPaymentTracker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,13 @@ class PendingPaymentTracker {
];
if (client === undefined) {
this.logger.warn(
`Could not track payment ${payment.preimageHash}: ${payment.Swap.lightningCurrency} ${nodeTypeToPrettyString(payment.node)} is not available`,
`Could not track payment ${payment.Swap.id} (${payment.preimageHash}): ${payment.Swap.lightningCurrency} ${nodeTypeToPrettyString(payment.node)} is not available`,
);
continue;
}

this.logger.debug(
`Watching pending ${client.symbol} ${nodeTypeToPrettyString(client.type)} payment: ${payment.preimageHash}`,
`Watching pending ${client.symbol} ${nodeTypeToPrettyString(client.type)} payment of ${payment.Swap.id}: ${payment.preimageHash}`,
);
this.lightningTrackers[payment.node].watchPayment(
client,
Expand All @@ -73,6 +73,7 @@ class PendingPaymentTracker {
};

public sendPayment = async (
swapId: string,
lightningClient: LightningClient,
invoice: string,
cltvLimit?: number,
Expand All @@ -96,12 +97,13 @@ class PendingPaymentTracker {
switch (status) {
case LightningPaymentStatus.Pending:
this.logger.verbose(
`Invoice payment of ${preimageHash} still pending with node ${nodeTypeToPrettyString(relevant.node)}`,
`Invoice payment of ${swapId} (${preimageHash}) still pending with node ${nodeTypeToPrettyString(relevant.node)}`,
);
return undefined;

case LightningPaymentStatus.Success:
return this.getSuccessfulPaymentDetails(
swapId,
relevant,
lightningClient.symbol,
preimageHash,
Expand All @@ -110,13 +112,15 @@ class PendingPaymentTracker {

case LightningPaymentStatus.PermanentFailure:
return await this.getPermanentFailureDetails(
swapId,
relevant,
lightningClient.symbol,
);
}
}

return this.sendPaymentWithNode(
swapId,
lightningClient,
preimageHash,
invoice,
Expand All @@ -126,6 +130,7 @@ class PendingPaymentTracker {
};

private sendPaymentWithNode = async (
swapId: string,
lightningClient: LightningClient,
preimageHash: string,
invoice: string,
Expand Down Expand Up @@ -166,7 +171,7 @@ class PendingPaymentTracker {
paymentPromise,
);
this.logger.verbose(
`Invoice payment ${preimageHash} is still pending with node ${nodeTypeToPrettyString(lightningClient.type)} after ${PendingPaymentTracker.raceTimeout} seconds`,
`Invoice payment of ${swapId} (${preimageHash}) is still pending with node ${nodeTypeToPrettyString(lightningClient.type)} after ${PendingPaymentTracker.raceTimeout} seconds`,
);
return undefined;
}
Expand All @@ -189,19 +194,20 @@ class PendingPaymentTracker {
};

private getSuccessfulPaymentDetails = async (
swapId: string,
payment: LightningPayment,
symbol: string,
preimageHash: string,
invoice: string,
): Promise<PaymentResponse | undefined> => {
this.logger.verbose(
`Invoice payment of ${preimageHash} has already succeeded on node ${symbol} ${nodeTypeToPrettyString(payment.node)}`,
`Invoice payment of ${swapId} (${preimageHash}) has already succeeded on node ${symbol} ${nodeTypeToPrettyString(payment.node)}`,
);

const nodeThatPaid = this.lightningNodes.get(symbol)[payment.node];
if (nodeThatPaid === undefined) {
this.logger.warn(
`Could not resolve payment ${preimageHash}: ${symbol} ${nodeTypeToPrettyString(payment.node)} is not available`,
`Could not resolve payment of ${swapId} (${preimageHash}): ${symbol} ${nodeTypeToPrettyString(payment.node)} is not available`,
);
return undefined;
}
Expand All @@ -223,11 +229,12 @@ class PendingPaymentTracker {
};

private getPermanentFailureDetails = async (
swapId: string,
payment: LightningPayment,
symbol: string,
) => {
this.logger.verbose(
`Invoice payment of ${payment.preimageHash} has failed with a permanent error on node ${symbol} ${nodeTypeToPrettyString(payment.node)}`,
`Invoice payment of ${swapId} (${payment.preimageHash}) has failed with a permanent error on node ${symbol} ${nodeTypeToPrettyString(payment.node)}`,
);
throw payment.error;
};
Expand Down
1 change: 1 addition & 0 deletions lib/swap/PaymentHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ class PaymentHandler {
`Paying invoice of swap ${swap.id} with CLTV limit: ${cltvLimit}`,
);
const payResponse = await this.pendingPaymentTracker.sendPayment(
swap.id,
lightningClient,
swap.invoice!,
cltvLimit,
Expand Down
19 changes: 10 additions & 9 deletions test/integration/lightning/PendingPaymentTracker.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@ describe('PendingPaymentTracker', () => {

await waitForClnChainSync();
const res = await tracker.sendPayment(
'',
clnClient,
invoiceRes.paymentRequest,
);
Expand Down Expand Up @@ -193,7 +194,7 @@ describe('PendingPaymentTracker', () => {
});

await expect(
tracker.sendPayment(clnClient, invoiceRes.paymentRequest),
tracker.sendPayment('', clnClient, invoiceRes.paymentRequest),
).rejects.toEqual(expect.anything());

const payments =
Expand All @@ -220,9 +221,9 @@ describe('PendingPaymentTracker', () => {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-expect-error
PendingPaymentTracker['raceTimeout'] = 2;
await expect(tracker.sendPayment(clnClient, invoice)).resolves.toEqual(
undefined,
);
await expect(
tracker.sendPayment('', clnClient, invoice),
).resolves.toEqual(undefined);
await bitcoinLndClient.cancelHoldInvoice(preimageHash);

expect(
Expand Down Expand Up @@ -253,7 +254,7 @@ describe('PendingPaymentTracker', () => {
});

await expect(
tracker.sendPayment(bitcoinLndClient, swap.invoice!),
tracker.sendPayment('', bitcoinLndClient, swap.invoice!),
).resolves.toEqual(undefined);
});

Expand All @@ -280,7 +281,7 @@ describe('PendingPaymentTracker', () => {

const paymentRes = await bitcoinLndClient.sendPayment(invoice);
await expect(
tracker.sendPayment(bitcoinLndClient, invoice),
tracker.sendPayment('', bitcoinLndClient, invoice),
).resolves.toEqual(paymentRes);
});

Expand All @@ -301,7 +302,7 @@ describe('PendingPaymentTracker', () => {
invoiceRes.paymentRequest,
);
await expect(
tracker.sendPayment(clnClient, invoiceRes.paymentRequest),
tracker.sendPayment('', clnClient, invoiceRes.paymentRequest),
).resolves.toEqual(paymentRes);
});

Expand All @@ -327,7 +328,7 @@ describe('PendingPaymentTracker', () => {

await clnClient.sendPayment(invoiceRes.paymentRequest);
await expect(
tracker.sendPayment(clnClient, invoiceRes.paymentRequest),
tracker.sendPayment('', clnClient, invoiceRes.paymentRequest),
).resolves.toEqual(undefined);
});
});
Expand All @@ -350,7 +351,7 @@ describe('PendingPaymentTracker', () => {
});

await expect(
tracker.sendPayment(bitcoinLndClient, invoice),
tracker.sendPayment('', bitcoinLndClient, invoice),
).rejects.toEqual(error);
});
});
Expand Down

0 comments on commit e52efbf

Please sign in to comment.