graph/db: let ForEachNodeCached take a context
This commit is contained in:
8 files changed
+15
-14
No files matched your search
+1
-1
@@ -219,7 +219,7 @@ func (nc dbNodeCached) ForEachChannel(ctx context.Context,
|
|||||||
func (dc *databaseChannelGraphCached) ForEachNode(ctx context.Context,
|
func (dc *databaseChannelGraphCached) ForEachNode(ctx context.Context,
|
||||||
cb func(context.Context, Node) error) error {
|
cb func(context.Context, Node) error) error {
|
||||||
|
|
||||||
return dc.db.ForEachNodeCached(func(n route.Vertex,
|
return dc.db.ForEachNodeCached(ctx, func(n route.Vertex,
|
||||||
channels map[uint64]*graphdb.DirectedChannel) error {
|
channels map[uint64]*graphdb.DirectedChannel) error {
|
||||||
|
|
||||||
if len(channels) > 0 {
|
if len(channels) > 0 {
|
||||||
|
|||||||
@@ -234,6 +234,6 @@ type GraphSource interface {
|
|||||||
// channel graph cache if one is available. It is less consistent than
|
// channel graph cache if one is available. It is less consistent than
|
||||||
// ForEachNode since any further calls are made across multiple
|
// ForEachNode since any further calls are made across multiple
|
||||||
// transactions.
|
// transactions.
|
||||||
ForEachNodeCached(cb func(node route.Vertex,
|
ForEachNodeCached(ctx context.Context, cb func(node route.Vertex,
|
||||||
chans map[uint64]*graphdb.DirectedChannel) error) error
|
chans map[uint64]*graphdb.DirectedChannel) error) error
|
||||||
}
|
}
|
||||||
+4
-3
@@ -245,14 +245,15 @@ func (c *ChannelGraph) GraphSession(cb func(graph NodeTraverser) error) error {
|
|||||||
// graph, executing the passed callback with each node encountered.
|
// graph, executing the passed callback with each node encountered.
|
||||||
//
|
//
|
||||||
// NOTE: The callback contents MUST not be modified.
|
// NOTE: The callback contents MUST not be modified.
|
||||||
func (c *ChannelGraph) ForEachNodeCached(cb func(node route.Vertex,
|
func (c *ChannelGraph) ForEachNodeCached(ctx context.Context,
|
||||||
chans map[uint64]*DirectedChannel) error) error {
|
cb func(node route.Vertex,
|
||||||
|
chans map[uint64]*DirectedChannel) error) error {
|
||||||
|
|
||||||
if c.graphCache != nil {
|
if c.graphCache != nil {
|
||||||
return c.graphCache.ForEachNode(cb)
|
return c.graphCache.ForEachNode(cb)
|
||||||
}
|
}
|
||||||
|
|
||||||
return c.V1Store.ForEachNodeCached(cb)
|
return c.V1Store.ForEachNodeCached(ctx, cb)
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddLightningNode adds a vertex/node to the graph database. If the node is not
|
// AddLightningNode adds a vertex/node to the graph database. If the node is not
|
||||||
|
|||||||
@@ -1358,7 +1358,7 @@ func TestGraphTraversal(t *testing.T) {
|
|||||||
// set of channels (to force the fall back), we should find all the
|
// set of channels (to force the fall back), we should find all the
|
||||||
// channel as well as the nodes included.
|
// channel as well as the nodes included.
|
||||||
graph.graphCache = nil
|
graph.graphCache = nil
|
||||||
err := graph.ForEachNodeCached(func(node route.Vertex,
|
err := graph.ForEachNodeCached(ctx, func(node route.Vertex,
|
||||||
chans map[uint64]*DirectedChannel) error {
|
chans map[uint64]*DirectedChannel) error {
|
||||||
|
|
||||||
if _, ok := nodeIndex[node]; !ok {
|
if _, ok := nodeIndex[node]; !ok {
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ type V1Store interface { //nolint:interfacebloat
|
|||||||
// DirectedChannel data to the call-back.
|
// DirectedChannel data to the call-back.
|
||||||
//
|
//
|
||||||
// NOTE: The callback contents MUST not be modified.
|
// NOTE: The callback contents MUST not be modified.
|
||||||
ForEachNodeCached(cb func(node route.Vertex,
|
ForEachNodeCached(ctx context.Context, cb func(node route.Vertex,
|
||||||
chans map[uint64]*DirectedChannel) error) error
|
chans map[uint64]*DirectedChannel) error) error
|
||||||
|
|
||||||
// ForEachNode iterates through all the stored vertices/nodes in the
|
// ForEachNode iterates through all the stored vertices/nodes in the
|
||||||
|
|||||||
@@ -667,8 +667,9 @@ func (c *KVStore) FetchNodeFeatures(nodePub route.Vertex) (
|
|||||||
// data to the call-back.
|
// data to the call-back.
|
||||||
//
|
//
|
||||||
// NOTE: The callback contents MUST not be modified.
|
// NOTE: The callback contents MUST not be modified.
|
||||||
func (c *KVStore) ForEachNodeCached(cb func(node route.Vertex,
|
func (c *KVStore) ForEachNodeCached(_ context.Context,
|
||||||
chans map[uint64]*DirectedChannel) error) error {
|
cb func(node route.Vertex,
|
||||||
|
chans map[uint64]*DirectedChannel) error) error {
|
||||||
|
|
||||||
// Otherwise call back to a version that uses the database directly.
|
// Otherwise call back to a version that uses the database directly.
|
||||||
// We'll iterate over each node, then the set of channels for each
|
// We'll iterate over each node, then the set of channels for each
|
||||||
|
|||||||
@@ -1102,10 +1102,9 @@ func (s *SQLStore) ChanUpdatesInHorizon(startTime,
|
|||||||
// NOTE: The callback contents MUST not be modified.
|
// NOTE: The callback contents MUST not be modified.
|
||||||
//
|
//
|
||||||
// NOTE: part of the V1Store interface.
|
// NOTE: part of the V1Store interface.
|
||||||
func (s *SQLStore) ForEachNodeCached(cb func(node route.Vertex,
|
func (s *SQLStore) ForEachNodeCached(ctx context.Context,
|
||||||
chans map[uint64]*DirectedChannel) error) error {
|
cb func(node route.Vertex,
|
||||||
|
chans map[uint64]*DirectedChannel) error) error {
|
||||||
var ctx = context.TODO()
|
|
||||||
|
|
||||||
return s.db.ExecTx(ctx, sqldb.ReadTxOpt(), func(db SQLQueries) error {
|
return s.db.ExecTx(ctx, sqldb.ReadTxOpt(), func(db SQLQueries) error {
|
||||||
return forEachNodeCacheable(ctx, db, func(nodeID int64,
|
return forEachNodeCacheable(ctx, db, func(nodeID int64,
|
||||||
|
|||||||
+1
-1
@@ -7130,7 +7130,7 @@ func (r *rpcServer) GetNetworkInfo(ctx context.Context,
|
|||||||
// network, tallying up the total number of nodes, and also gathering
|
// network, tallying up the total number of nodes, and also gathering
|
||||||
// each node so we can measure the graph diameter and degree stats
|
// each node so we can measure the graph diameter and degree stats
|
||||||
// below.
|
// below.
|
||||||
err := graph.ForEachNodeCached(func(node route.Vertex,
|
err := graph.ForEachNodeCached(ctx, func(node route.Vertex,
|
||||||
edges map[uint64]*graphdb.DirectedChannel) error {
|
edges map[uint64]*graphdb.DirectedChannel) error {
|
||||||
|
|
||||||
// Increment the total number of nodes with each iteration.
|
// Increment the total number of nodes with each iteration.
|
||||||
|
|||||||
Reference in new issue
Block a user