multi: thread context through DeleteFailedAttempts

This commit is contained in:
ziggie committed 2026-02-25 08:02:24 +01:00
1 parent 635a67c94a
commit 7f2df4b088
7 files changed
+44 -18

No files matched your search

+1 -1
View File
@@ -104,7 +104,7 @@ type PaymentControl interface {
// DeleteFailedAttempts removes all failed HTLCs from the db. It should
// be called for a given payment whenever all inflight htlcs are
// completed, and the payment has reached a final terminal state.
DeleteFailedAttempts(lntypes.Hash) error
DeleteFailedAttempts(context.Context, lntypes.Hash) error
}
// DBMPPayment is an interface that represents the payment state during a
+4 -2
View File
@@ -290,12 +290,14 @@ func (p *KVStore) InitPayment(_ context.Context, paymentHash lntypes.Hash,
// DeleteFailedAttempts deletes all failed htlcs for a payment if configured
// by the KVStore db.
func (p *KVStore) DeleteFailedAttempts(hash lntypes.Hash) error {
func (p *KVStore) DeleteFailedAttempts(ctx context.Context,
hash lntypes.Hash) error {
// TODO(ziggie): Refactor to not mix application logic with database
// logic. This decision should be made in the application layer.
if !p.keepFailedPaymentAttempts {
const failedHtlcsOnly = true
err := p.DeletePayment(context.TODO(), hash, failedHtlcsOnly)
err := p.DeletePayment(ctx, hash, failedHtlcsOnly)
if err != nil {
return err
}
+19 -7
View File
@@ -503,7 +503,9 @@ func testDeleteFailedAttempts(t *testing.T, keepFailedPaymentAttempts bool) {
// Calling DeleteFailedAttempts on a failed payment should delete all
// HTLCs.
require.NoError(t, paymentDB.DeleteFailedAttempts(payments[0].id))
require.NoError(t, paymentDB.DeleteFailedAttempts(
t.Context(), payments[0].id,
))
// Expect all HTLCs to be deleted if the config is set to delete them.
if !keepFailedPaymentAttempts {
@@ -518,11 +520,15 @@ func testDeleteFailedAttempts(t *testing.T, keepFailedPaymentAttempts bool) {
// operation are performed in general therefore we do NOT expect an
// error in this case.
if keepFailedPaymentAttempts {
require.NoError(t, paymentDB.DeleteFailedAttempts(
payments[1].id),
err := paymentDB.DeleteFailedAttempts(
t.Context(), payments[1].id,
)
require.NoError(t, err)
} else {
require.Error(t, paymentDB.DeleteFailedAttempts(payments[1].id))
err := paymentDB.DeleteFailedAttempts(
t.Context(), payments[1].id,
)
require.Error(t, err)
}
// Since DeleteFailedAttempts returned an error, we should expect the
@@ -530,7 +536,9 @@ func testDeleteFailedAttempts(t *testing.T, keepFailedPaymentAttempts bool) {
assertDBPayments(t, paymentDB, payments)
// Cleaning up a successful payment should remove failed htlcs.
require.NoError(t, paymentDB.DeleteFailedAttempts(payments[2].id))
require.NoError(t, paymentDB.DeleteFailedAttempts(
t.Context(), payments[2].id,
))
// Expect all HTLCs except for the settled one to be deleted if the
// config is set to delete them.
@@ -547,13 +555,17 @@ func testDeleteFailedAttempts(t *testing.T, keepFailedPaymentAttempts bool) {
// payments, if the control tower is configured to keep failed
// HTLCs.
require.NoError(
t, paymentDB.DeleteFailedAttempts(lntypes.ZeroHash),
t, paymentDB.DeleteFailedAttempts(
t.Context(), lntypes.ZeroHash,
),
)
} else {
// Attempting to cleanup a non-existent payment returns an
// error.
require.Error(
t, paymentDB.DeleteFailedAttempts(lntypes.ZeroHash),
t, paymentDB.DeleteFailedAttempts(
t.Context(), lntypes.ZeroHash,
),
)
}
}
+2 -2
View File
@@ -1106,8 +1106,8 @@ func (s *SQLStore) FetchInFlightPayments(ctx context.Context) ([]*MPPayment,
// the final step (step 5) in the payment lifecycle control flow and should be
// called after a payment reaches a terminal state (succeeded or permanently
// failed) to clean up historical failed attempts.
func (s *SQLStore) DeleteFailedAttempts(paymentHash lntypes.Hash) error {
ctx := context.TODO()
func (s *SQLStore) DeleteFailedAttempts(ctx context.Context,
paymentHash lntypes.Hash) error {
// In case we are configured to keep failed payment attempts, we exit
// early.