multi: revert back changes from 9911

always process remote ADDs even when they are empty to trigger
the gc process when loading them back into memory.
This commit is contained in:
ziggie
2025-07-08 10:25:26 +02:00
committed by Oliver Gugger
parent 7afaaffb3e
commit 15cd86c0aa
2 changed files with 21 additions and 12 deletions

View File

@@ -248,6 +248,11 @@ type FwdPkg struct {
// FwdFilter is a filter containing the indices of all Adds that were
// forwarded to the switch.
//
// NOTE: This value signals when persisted to disk that the fwd package
// has been processed and garbage collection can happen. So it also
// has to be set for packages with no adds (empty packages or only
// settle/fail packages) so that they can be garbage collected as well.
FwdFilter *PkgFilter
// AckFilter is a filter containing the indices of all Adds for which
@@ -678,24 +683,31 @@ func loadFwdPkg(fwdPkgBkt kvdb.RBucket, source lnwire.ShortChannelID,
SettleFailFilter: settleFailFilter,
}
// Check to see if we have written the set exported filter adds to
// disk. If we haven't, processing of this package was never started, or
// failed during the last attempt.
// Check if the forward filter has been persisted to disk.
// This indicates whether the Adds in this package have been processed.
//
// NOTE: We also expect packages with no Adds (settle/fail only packages
// or empty packages) to have the fwd filter set to signal that the
// packages have been processed.
fwdFilterBytes := heightBkt.Get(fwdFilterKey)
// Handle packages with Adds that haven't been processed yet.
if fwdFilterBytes == nil {
// Create a new forward filter for the unprocessed Adds.
nAdds := uint16(len(adds))
fwdPkg.FwdFilter = NewPkgFilter(nAdds)
return fwdPkg, nil
}
// Load the existing forward filter from disk.
fwdFilterReader := bytes.NewReader(fwdFilterBytes)
fwdPkg.FwdFilter = &PkgFilter{}
if err := fwdPkg.FwdFilter.Decode(fwdFilterReader); err != nil {
return nil, err
}
// Otherwise, a complete round of processing was completed, and we
// advance the package to FwdStateProcessed.
// Mark the package as processed since the forward filter exists.
fwdPkg.State = FwdStateProcessed
// If every add, settle, and fail has been fully acknowledged, we can

View File

@@ -3747,15 +3747,12 @@ func (l *channelLink) processRemoteSettleFails(fwdPkg *channeldb.FwdPkg) {
// whether we are reprocessing as a result of a failure or restart. Adds that
// have already been acknowledged in the forwarding package will be ignored.
//
// NOTE: This function needs also be called for fwd packages with no ADDs
// because it marks the fwdPkg as processed by writing the FwdFilter into the
// database.
//
//nolint:funlen
func (l *channelLink) processRemoteAdds(fwdPkg *channeldb.FwdPkg) {
// Exit early if there are no adds to process.
if len(fwdPkg.Adds) == 0 {
l.log.Trace("fwd package has no adds to process exiting early")
return
}
// Exit early if the fwdPkg is already processed.
if fwdPkg.State == channeldb.FwdStateCompleted {
l.log.Debugf("skipped processing completed fwdPkg %v", fwdPkg)