From 4dcaf1c16a3142cdd07315b3d2026cb9ed9f079e Mon Sep 17 00:00:00 2001 From: Elle Mouton Date: Wed, 25 Feb 2026 12:39:40 +0200 Subject: [PATCH] graphdb: pass context to PutClosedScid --- discovery/ban.go | 9 ++++++--- discovery/gossiper.go | 4 +++- discovery/mock_test.go | 5 ++++- graph/db/graph.go | 6 ++++-- graph/db/graph_test.go | 2 +- graph/db/interfaces.go | 2 +- graph/db/kv_store.go | 4 +++- graph/db/sql_store.go | 5 +++-- 8 files changed, 25 insertions(+), 12 deletions(-) diff --git a/discovery/ban.go b/discovery/ban.go index 5229c706c..7100c2f8b 100644 --- a/discovery/ban.go +++ b/discovery/ban.go @@ -1,6 +1,7 @@ package discovery import ( + "context" "errors" "math" "sync" @@ -55,7 +56,7 @@ type ClosedChannelTracker interface { type GraphCloser interface { // PutClosedScid marks a channel as closed so that we won't validate // channel announcements for it again. - PutClosedScid(lnwire.ShortChannelID) error + PutClosedScid(context.Context, lnwire.ShortChannelID) error // IsClosedScid checks if a short channel id is closed. IsClosedScid(lnwire.ShortChannelID) (bool, error) @@ -88,8 +89,10 @@ func NewScidCloserMan(graph GraphCloser, // PutClosedScid marks scid as closed so the gossiper can ignore this channel // in the future. -func (s *ScidCloserMan) PutClosedScid(scid lnwire.ShortChannelID) error { - return s.graph.PutClosedScid(scid) +func (s *ScidCloserMan) PutClosedScid(ctx context.Context, + scid lnwire.ShortChannelID) error { + + return s.graph.PutClosedScid(ctx, scid) } // IsClosedScid checks whether scid is closed so that the gossiper can ignore diff --git a/discovery/gossiper.go b/discovery/gossiper.go index d2375cb1d..11aa4ce90 100644 --- a/discovery/gossiper.go +++ b/discovery/gossiper.go @@ -2877,7 +2877,9 @@ func (d *AuthenticatedGossiper) handleChanAnnouncement(ctx context.Context, // expensive validation checks on it again. // TODO: Populate the ScidCloser by using closed // channel notifications. - dbErr := d.cfg.ScidCloser.PutClosedScid(scid) + dbErr := d.cfg.ScidCloser.PutClosedScid( + ctx, scid, + ) if dbErr != nil { log.Errorf("failed to mark scid(%v) "+ "as closed: %v", scid, dbErr) diff --git a/discovery/mock_test.go b/discovery/mock_test.go index 6bd93c29b..87464c755 100644 --- a/discovery/mock_test.go +++ b/discovery/mock_test.go @@ -1,6 +1,7 @@ package discovery import ( + "context" "errors" "net" "sync" @@ -176,7 +177,9 @@ func newMockScidCloser(channelPeer bool) *mockScidCloser { } } -func (m *mockScidCloser) PutClosedScid(scid lnwire.ShortChannelID) error { +func (m *mockScidCloser) PutClosedScid(_ context.Context, + scid lnwire.ShortChannelID) error { + m.Lock() m.m[scid] = struct{}{} m.Unlock() diff --git a/graph/db/graph.go b/graph/db/graph.go index 66ab6d931..de10bacd0 100644 --- a/graph/db/graph.go +++ b/graph/db/graph.go @@ -772,8 +772,10 @@ func (c *ChannelGraph) NumZombies(ctx context.Context) (uint64, error) { } // PutClosedScid stores a SCID for a closed channel in the database. -func (c *ChannelGraph) PutClosedScid(scid lnwire.ShortChannelID) error { - return c.db.PutClosedScid(scid) +func (c *ChannelGraph) PutClosedScid(ctx context.Context, + scid lnwire.ShortChannelID) error { + + return c.db.PutClosedScid(ctx, scid) } // IsClosedScid checks whether a channel identified by the scid is closed. diff --git a/graph/db/graph_test.go b/graph/db/graph_test.go index d25289b2d..5dd84c410 100644 --- a/graph/db/graph_test.go +++ b/graph/db/graph_test.go @@ -5092,7 +5092,7 @@ func TestClosedScid(t *testing.T) { // After we call PutClosedScid, the call to IsClosedScid should return // true. - err = graph.PutClosedScid(scid) + err = graph.PutClosedScid(t.Context(), scid) require.Nil(t, err) exists, err = graph.IsClosedScid(scid) diff --git a/graph/db/interfaces.go b/graph/db/interfaces.go index eb3f7e914..15b9b5f55 100644 --- a/graph/db/interfaces.go +++ b/graph/db/interfaces.go @@ -348,7 +348,7 @@ type Store interface { //nolint:interfacebloat // PutClosedScid stores a SCID for a closed channel in the database. // This is so that we can ignore channel announcements that we know to // be closed without having to validate them and fetch a block. - PutClosedScid(scid lnwire.ShortChannelID) error + PutClosedScid(ctx context.Context, scid lnwire.ShortChannelID) error // IsClosedScid checks whether a channel identified by the passed in // scid is closed. This helps avoid having to perform expensive diff --git a/graph/db/kv_store.go b/graph/db/kv_store.go index 35842ecee..96ea2f254 100644 --- a/graph/db/kv_store.go +++ b/graph/db/kv_store.go @@ -4437,7 +4437,9 @@ func (c *KVStore) NumZombies(_ context.Context) (uint64, error) { // PutClosedScid stores a SCID for a closed channel in the database. This is so // that we can ignore channel announcements that we know to be closed without // having to validate them and fetch a block. -func (c *KVStore) PutClosedScid(scid lnwire.ShortChannelID) error { +func (c *KVStore) PutClosedScid(_ context.Context, + scid lnwire.ShortChannelID) error { + return kvdb.Update(c.db, func(tx kvdb.RwTx) error { closedScids, err := tx.CreateTopLevelBucket(closedScidBucket) if err != nil { diff --git a/graph/db/sql_store.go b/graph/db/sql_store.go index 78ef82c98..a146a831b 100644 --- a/graph/db/sql_store.go +++ b/graph/db/sql_store.go @@ -3271,9 +3271,10 @@ func (s *SQLStore) AddEdgeProof(ctx context.Context, // having to validate them and fetch a block. // // NOTE: part of the Store interface. -func (s *SQLStore) PutClosedScid(scid lnwire.ShortChannelID) error { +func (s *SQLStore) PutClosedScid(ctx context.Context, + scid lnwire.ShortChannelID) error { + var ( - ctx = context.TODO() chanIDB = channelIDToBytes(scid.ToUint64()) )