multi: make canceled invoice garbage collection configurable

This commit extends the application config with a flag to control canceled
invoice garbage collection upon startup.
This commit is contained in:
Andras Banki-Horvath
2020-07-28 23:57:51 +02:00
parent 0ea763d83c
commit a0d7877d9a
4 changed files with 18 additions and 8 deletions

View File

@@ -57,6 +57,10 @@ type RegistryConfig struct {
// send payments.
AcceptKeySend bool
// GcCanceledInvoicesOnStartup if set, we'll attempt to garbage collect
// all canceled invoices upon start.
GcCanceledInvoicesOnStartup bool
// KeysendHoldTime indicates for how long we want to accept and hold
// spontaneous keysend payments.
KeysendHoldTime time.Duration
@@ -171,7 +175,9 @@ func (i *InvoiceRegistry) scanInvoicesOnStart() error {
if invoice.IsPending() {
pending[paymentHash] = invoice
} else if invoice.State == channeldb.ContractCanceled {
} else if i.cfg.GcCanceledInvoicesOnStartup &&
invoice.State == channeldb.ContractCanceled {
// Consider invoice for removal if it is already
// canceled. Invoices that are expired but not yet
// canceled, will be queued up for cancellation after

View File

@@ -1091,8 +1091,9 @@ func TestOldInvoiceRemovalOnStart(t *testing.T) {
require.NoError(t, err)
cfg := RegistryConfig{
FinalCltvRejectDelta: testFinalCltvRejectDelta,
Clock: testClock,
FinalCltvRejectDelta: testFinalCltvRejectDelta,
Clock: testClock,
GcCanceledInvoicesOnStartup: true,
}
expiryWatcher := NewInvoiceExpiryWatcher(cfg.Clock)