diff --git a/graph/db/interfaces.go b/graph/db/interfaces.go index 3dadd144c..5ad086d54 100644 --- a/graph/db/interfaces.go +++ b/graph/db/interfaces.go @@ -20,11 +20,6 @@ import ( type NodeRTx interface { // Node returns the raw information of the node. Node() *models.LightningNode - - // ForEachChannel can be used to iterate over the node's channels under - // the same transaction used to fetch the node. - ForEachChannel(func(*models.ChannelEdgeInfo, *models.ChannelEdgePolicy, - *models.ChannelEdgePolicy) error) error } // NodeTraverser is an abstract read only interface that provides information diff --git a/graph/db/kv_store.go b/graph/db/kv_store.go index df761cfb2..cf49b0d60 100644 --- a/graph/db/kv_store.go +++ b/graph/db/kv_store.go @@ -4906,24 +4906,3 @@ func newChanGraphNodeTx(tx kvdb.RTx, db *KVStore, func (c *chanGraphNodeTx) Node() *models.LightningNode { return c.node } - -// ForEachChannel can be used to iterate over the node's channels under -// the same transaction used to fetch the node. -// -// NOTE: This is a part of the NodeRTx interface. -func (c *chanGraphNodeTx) ForEachChannel(f func(*models.ChannelEdgeInfo, - *models.ChannelEdgePolicy, *models.ChannelEdgePolicy) error) error { - - return c.db.forEachNodeChannelTx( - c.tx, c.node.PubKeyBytes, - func(_ kvdb.RTx, info *models.ChannelEdgeInfo, policy1, - policy2 *models.ChannelEdgePolicy) error { - - return f(info, policy1, policy2) - }, - // NOTE: We don't need to reset anything here as the caller is - // expected to pass in the reset function to the ForEachNode - // method that constructed the chanGraphNodeTx. - func() {}, - ) -} diff --git a/graph/db/sql_store.go b/graph/db/sql_store.go index dc1c1c460..f6430ba43 100644 --- a/graph/db/sql_store.go +++ b/graph/db/sql_store.go @@ -853,18 +853,6 @@ func (s *sqlGraphNodeTx) Node() *models.LightningNode { return s.node } -// ForEachChannel can be used to iterate over the node's channels under the same -// transaction used to fetch the node. -// -// NOTE: This is a part of the NodeRTx interface. -func (s *sqlGraphNodeTx) ForEachChannel(cb func(*models.ChannelEdgeInfo, - *models.ChannelEdgePolicy, *models.ChannelEdgePolicy) error) error { - - ctx := context.TODO() - - return forEachNodeChannel(ctx, s.db, s.cfg, s.id, cb) -} - // ForEachNodeDirectedChannel iterates through all channels of a given node, // executing the passed callback on the directed edge representing the channel // and its incoming policy. If the callback returns an error, then the iteration diff --git a/itest/lnd_graph_migration_test.go b/itest/lnd_graph_migration_test.go index fe3e6b175..07abc3bb0 100644 --- a/itest/lnd_graph_migration_test.go +++ b/itest/lnd_graph_migration_test.go @@ -3,12 +3,13 @@ package itest import ( "context" "database/sql" + "net" "github.com/lightningnetwork/lnd" graphdb "github.com/lightningnetwork/lnd/graph/db" - "github.com/lightningnetwork/lnd/graph/db/models" "github.com/lightningnetwork/lnd/lntest" "github.com/lightningnetwork/lnd/lntest/node" + "github.com/lightningnetwork/lnd/routing/route" "github.com/lightningnetwork/lnd/sqldb" "github.com/stretchr/testify/require" ) @@ -69,19 +70,18 @@ func testGraphMigration(ht *lntest.HarnessTest) { numNodes int edges = make(map[uint64]bool) ) - err := db.ForEachNode(ctx, func(tx graphdb.NodeRTx) error { + err := db.ForEachNodeCached(ctx, false, func(_ context.Context, + _ route.Vertex, _ []net.Addr, + chans map[uint64]*graphdb.DirectedChannel) error { + numNodes++ // For each node, also count the number of edges. - return tx.ForEachChannel( - func(info *models.ChannelEdgeInfo, - _ *models.ChannelEdgePolicy, - _ *models.ChannelEdgePolicy) error { + for _, ch := range chans { + edges[ch.ChannelID] = true + } - edges[info.ChannelID] = true - return nil - }, - ) + return nil }, func() { clear(edges) numNodes = 0