mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-05-21 17:20:03 +02:00
channeldb+rpcserver: return number of deleted payments
This commit is contained in:
parent
e3cc4d70c0
commit
15a5fe7704
@ -435,9 +435,9 @@ func TestPaymentControlDeleteNonInFlight(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Delete all failed payments.
|
// Delete all failed payments.
|
||||||
if err := db.DeletePayments(true, false); err != nil {
|
numPayments, err := db.DeletePayments(true, false)
|
||||||
t.Fatal(err)
|
require.NoError(t, err)
|
||||||
}
|
require.EqualValues(t, 1, numPayments)
|
||||||
|
|
||||||
// This should leave the succeeded and in-flight payments.
|
// This should leave the succeeded and in-flight payments.
|
||||||
dbPayments, err := db.FetchPayments()
|
dbPayments, err := db.FetchPayments()
|
||||||
@ -471,9 +471,9 @@ func TestPaymentControlDeleteNonInFlight(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Now delete all payments except in-flight.
|
// Now delete all payments except in-flight.
|
||||||
if err := db.DeletePayments(false, false); err != nil {
|
numPayments, err = db.DeletePayments(false, false)
|
||||||
t.Fatal(err)
|
require.NoError(t, err)
|
||||||
}
|
require.EqualValues(t, 2, numPayments)
|
||||||
|
|
||||||
// This should leave the in-flight payment.
|
// This should leave the in-flight payment.
|
||||||
dbPayments, err = db.FetchPayments()
|
dbPayments, err = db.FetchPayments()
|
||||||
@ -536,14 +536,18 @@ func TestPaymentControlDeletePayments(t *testing.T) {
|
|||||||
assertPayments(t, db, payments)
|
assertPayments(t, db, payments)
|
||||||
|
|
||||||
// Delete HTLC attempts for failed payments only.
|
// Delete HTLC attempts for failed payments only.
|
||||||
require.NoError(t, db.DeletePayments(true, true))
|
numPayments, err := db.DeletePayments(true, true)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.EqualValues(t, 0, numPayments)
|
||||||
|
|
||||||
// The failed payment is the only altered one.
|
// The failed payment is the only altered one.
|
||||||
payments[0].htlcs = 0
|
payments[0].htlcs = 0
|
||||||
assertPayments(t, db, payments)
|
assertPayments(t, db, payments)
|
||||||
|
|
||||||
// Delete failed attempts for all payments.
|
// Delete failed attempts for all payments.
|
||||||
require.NoError(t, db.DeletePayments(false, true))
|
numPayments, err = db.DeletePayments(false, true)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.EqualValues(t, 0, numPayments)
|
||||||
|
|
||||||
// The failed attempts should be deleted, except for the in-flight
|
// The failed attempts should be deleted, except for the in-flight
|
||||||
// payment, that shouldn't be altered until it has completed.
|
// payment, that shouldn't be altered until it has completed.
|
||||||
@ -551,12 +555,16 @@ func TestPaymentControlDeletePayments(t *testing.T) {
|
|||||||
assertPayments(t, db, payments)
|
assertPayments(t, db, payments)
|
||||||
|
|
||||||
// Now delete all failed payments.
|
// Now delete all failed payments.
|
||||||
require.NoError(t, db.DeletePayments(true, false))
|
numPayments, err = db.DeletePayments(true, false)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.EqualValues(t, 1, numPayments)
|
||||||
|
|
||||||
assertPayments(t, db, payments[1:])
|
assertPayments(t, db, payments[1:])
|
||||||
|
|
||||||
// Finally delete all completed payments.
|
// Finally delete all completed payments.
|
||||||
require.NoError(t, db.DeletePayments(false, false))
|
numPayments, err = db.DeletePayments(false, false)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.EqualValues(t, 1, numPayments)
|
||||||
|
|
||||||
assertPayments(t, db, payments[2:])
|
assertPayments(t, db, payments[2:])
|
||||||
}
|
}
|
||||||
|
@ -826,10 +826,12 @@ func (d *DB) DeletePayment(paymentHash lntypes.Hash,
|
|||||||
|
|
||||||
// DeletePayments deletes all completed and failed payments from the DB. If
|
// DeletePayments deletes all completed and failed payments from the DB. If
|
||||||
// failedOnly is set, only failed payments will be considered for deletion. If
|
// failedOnly is set, only failed payments will be considered for deletion. If
|
||||||
// failedHtlsOnly is set, the payment itself won't be deleted, only failed HTLC
|
// failedHtlcsOnly is set, the payment itself won't be deleted, only failed HTLC
|
||||||
// attempts.
|
// attempts. The method returns the number of deleted payments, which is always
|
||||||
func (d *DB) DeletePayments(failedOnly, failedHtlcsOnly bool) error {
|
// 0 if failedHtlcsOnly is set.
|
||||||
return kvdb.Update(d, func(tx kvdb.RwTx) error {
|
func (d *DB) DeletePayments(failedOnly, failedHtlcsOnly bool) (int, error) {
|
||||||
|
var numPayments int
|
||||||
|
err := kvdb.Update(d, func(tx kvdb.RwTx) error {
|
||||||
payments := tx.ReadWriteBucket(paymentsRootBucket)
|
payments := tx.ReadWriteBucket(paymentsRootBucket)
|
||||||
if payments == nil {
|
if payments == nil {
|
||||||
return nil
|
return nil
|
||||||
@ -906,6 +908,7 @@ func (d *DB) DeletePayments(failedOnly, failedHtlcsOnly bool) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
deleteIndexes = append(deleteIndexes, seqNrs...)
|
deleteIndexes = append(deleteIndexes, seqNrs...)
|
||||||
|
numPayments++
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -956,7 +959,14 @@ func (d *DB) DeletePayments(failedOnly, failedHtlcsOnly bool) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}, func() {})
|
}, func() {
|
||||||
|
numPayments = 0
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return numPayments, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// fetchSequenceNumbers fetches all the sequence numbers associated with a
|
// fetchSequenceNumbers fetches all the sequence numbers associated with a
|
||||||
|
@ -7319,7 +7319,7 @@ func (r *rpcServer) DeleteAllPayments(ctx context.Context,
|
|||||||
"failed_htlcs_only=%v", req.FailedPaymentsOnly,
|
"failed_htlcs_only=%v", req.FailedPaymentsOnly,
|
||||||
req.FailedHtlcsOnly)
|
req.FailedHtlcsOnly)
|
||||||
|
|
||||||
err := r.server.miscDB.DeletePayments(
|
_, err := r.server.miscDB.DeletePayments(
|
||||||
req.FailedPaymentsOnly, req.FailedHtlcsOnly,
|
req.FailedPaymentsOnly, req.FailedHtlcsOnly,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user