multi: thread context through DeletePayments

This commit is contained in:
ziggie committed 2026-02-25 08:02:19 +01:00
1 parent bc15d4bb50
commit 563a2ac9d3
6 files changed
+19 -14

No files matched your search

+2 -1
View File
@@ -36,7 +36,8 @@ type PaymentWriter interface {
// DeletePayments deletes all payments from the DB given the specified
// flags.
DeletePayments(failedOnly, failedAttemptsOnly bool) (int, error)
DeletePayments(ctx context.Context, failedOnly,
failedAttemptsOnly bool) (int, error)
PaymentControl
}
+1 -1
View File
@@ -1372,7 +1372,7 @@ func (p *KVStore) DeletePayment(_ context.Context, paymentHash lntypes.Hash,
// failedHtlcsOnly is set, the payment itself won't be deleted, only failed HTLC
// attempts. The method returns the number of deleted payments, which is always
// 0 if failedHtlcsOnly is set.
func (p *KVStore) DeletePayments(failedOnly,
func (p *KVStore) DeletePayments(_ context.Context, failedOnly,
failedHtlcsOnly bool) (int, error) {
var numPayments int
+4 -2
View File
@@ -30,6 +30,8 @@ import (
func TestKVStoreDeleteNonInFlight(t *testing.T) {
t.Parallel()
ctx := t.Context()
paymentDB := NewKVTestDB(t)
// Create a sequence number for duplicate payments that will not collide
@@ -180,7 +182,7 @@ func TestKVStoreDeleteNonInFlight(t *testing.T) {
}
// Delete all failed payments.
numPayments, err := paymentDB.DeletePayments(true, false)
numPayments, err := paymentDB.DeletePayments(ctx, true, false)
require.NoError(t, err)
require.EqualValues(t, 1, numPayments)
@@ -216,7 +218,7 @@ func TestKVStoreDeleteNonInFlight(t *testing.T) {
}
// Now delete all payments except in-flight.
numPayments, err = paymentDB.DeletePayments(false, false)
numPayments, err = paymentDB.DeletePayments(ctx, false, false)
require.NoError(t, err)
require.EqualValues(t, 2, numPayments)
+6 -4
View File
@@ -1658,6 +1658,8 @@ func TestFailsWithoutInFlight(t *testing.T) {
func TestDeletePayments(t *testing.T) {
t.Parallel()
ctx := t.Context()
paymentDB, _ := NewTestDB(t)
// Register three payments:
@@ -1678,7 +1680,7 @@ func TestDeletePayments(t *testing.T) {
assertDBPayments(t, paymentDB, payments)
// Delete HTLC attempts for failed payments only.
numPayments, err := paymentDB.DeletePayments(true, true)
numPayments, err := paymentDB.DeletePayments(ctx, true, true)
require.NoError(t, err)
require.EqualValues(t, 0, numPayments)
@@ -1687,7 +1689,7 @@ func TestDeletePayments(t *testing.T) {
assertDBPayments(t, paymentDB, payments)
// Delete failed attempts for all payments.
numPayments, err = paymentDB.DeletePayments(false, true)
numPayments, err = paymentDB.DeletePayments(ctx, false, true)
require.NoError(t, err)
require.EqualValues(t, 0, numPayments)
@@ -1697,14 +1699,14 @@ func TestDeletePayments(t *testing.T) {
assertDBPayments(t, paymentDB, payments)
// Now delete all failed payments.
numPayments, err = paymentDB.DeletePayments(true, false)
numPayments, err = paymentDB.DeletePayments(ctx, true, false)
require.NoError(t, err)
require.EqualValues(t, 1, numPayments)
assertDBPayments(t, paymentDB, payments[1:])
// Finally delete all completed payments.
numPayments, err = paymentDB.DeletePayments(false, false)
numPayments, err = paymentDB.DeletePayments(ctx, false, false)
require.NoError(t, err)
require.EqualValues(t, 1, numPayments)
+5 -5
View File
@@ -1874,13 +1874,13 @@ func (s *SQLStore) Fail(paymentHash lntypes.Hash,
// This method is part of the PaymentWriter interface, which is embedded in
// the DB interface.
//
// TODO(ziggie): batch this call instead in the background so for dbs with
// many payments it doesn't block the main thread.
func (s *SQLStore) DeletePayments(failedOnly, failedHtlcsOnly bool) (int,
error) {
// TODO(ziggie): batch and use iterator instead, moreover we dont need to fetch
// the complete payment data for each payment, we can just fetch the payment ID
// and the resolution types to decide if the payment is removable.
func (s *SQLStore) DeletePayments(ctx context.Context, failedOnly,
failedHtlcsOnly bool) (int, error) {
var numPayments int
ctx := context.TODO()
extractCursor := func(row sqlc.FilterPaymentsRow) int64 {
return row.Payment.ID
+1 -1
View File
@@ -7782,7 +7782,7 @@ func (r *rpcServer) DeleteAllPayments(ctx context.Context,
req.FailedHtlcsOnly)
numDeletedPayments, err := r.server.paymentsDB.DeletePayments(
req.FailedPaymentsOnly, req.FailedHtlcsOnly,
ctx, req.FailedPaymentsOnly, req.FailedHtlcsOnly,
)
if err != nil {
return nil, err