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:
parent
0ea763d83c
commit
a0d7877d9a
@ -242,6 +242,8 @@ type Config struct {
|
||||
|
||||
KeysendHoldTime time.Duration `long:"keysend-hold-time" description:"If non-zero, keysend payments are accepted but not immediately settled. If the payment isn't settled manually after the specified time, it is canceled automatically. [experimental]"`
|
||||
|
||||
GcCanceledInvoicesOnStartup bool `long:"gc-canceled-invoices-on-startup" description:"If true, we'll attempt to garbage collect canceled invoices upon start."`
|
||||
|
||||
Routing *routing.Conf `group:"routing" namespace:"routing"`
|
||||
|
||||
Workers *lncfg.Workers `group:"workers" namespace:"workers"`
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
11
server.go
11
server.go
@ -396,11 +396,12 @@ func newServer(cfg *Config, listenAddrs []net.Addr, chanDB *channeldb.DB,
|
||||
}
|
||||
|
||||
registryConfig := invoices.RegistryConfig{
|
||||
FinalCltvRejectDelta: lncfg.DefaultFinalCltvRejectDelta,
|
||||
HtlcHoldDuration: invoices.DefaultHtlcHoldDuration,
|
||||
Clock: clock.NewDefaultClock(),
|
||||
AcceptKeySend: cfg.AcceptKeySend,
|
||||
KeysendHoldTime: cfg.KeysendHoldTime,
|
||||
FinalCltvRejectDelta: lncfg.DefaultFinalCltvRejectDelta,
|
||||
HtlcHoldDuration: invoices.DefaultHtlcHoldDuration,
|
||||
Clock: clock.NewDefaultClock(),
|
||||
AcceptKeySend: cfg.AcceptKeySend,
|
||||
GcCanceledInvoicesOnStartup: cfg.GcCanceledInvoicesOnStartup,
|
||||
KeysendHoldTime: cfg.KeysendHoldTime,
|
||||
}
|
||||
|
||||
s := &server{
|
||||
|
Loading…
Reference in New Issue
Block a user