From f95588cacaae29db3e5dfc6ed28da52703dc6709 Mon Sep 17 00:00:00 2001 From: Elle Mouton Date: Mon, 9 Jun 2025 12:00:50 +0200 Subject: [PATCH] graph/db: add CachedEdgePolicy helpers --- graph/db/graph_cache.go | 6 ++---- graph/db/models/cached_edge_policy.go | 12 ++++++++++++ routing/unified_edges.go | 4 +--- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/graph/db/graph_cache.go b/graph/db/graph_cache.go index 9d6e3af5f..43069dd46 100644 --- a/graph/db/graph_cache.go +++ b/graph/db/graph_cache.go @@ -185,8 +185,6 @@ func (c *GraphCache) UpdatePolicy(policy *models.CachedEdgePolicy, fromNode, c.mtx.Lock() defer c.mtx.Unlock() - isEdge1 := policy.ChannelFlags&lnwire.ChanUpdateDirection == 0 - updatePolicy := func(nodeKey route.Vertex) { if len(c.nodeChannels[nodeKey]) == 0 { log.Warnf("Node=%v not found in graph cache", nodeKey) @@ -207,7 +205,7 @@ func (c *GraphCache) UpdatePolicy(policy *models.CachedEdgePolicy, fromNode, switch { // This is node 1, and it is edge 1, so this is the outgoing // policy for node 1. - case channel.IsNode1 && isEdge1: + case channel.IsNode1 && policy.IsNode1(): channel.OutPolicySet = true policy.InboundFee.WhenSome(func(fee lnwire.Fee) { channel.InboundFee = fee @@ -215,7 +213,7 @@ func (c *GraphCache) UpdatePolicy(policy *models.CachedEdgePolicy, fromNode, // This is node 2, and it is edge 2, so this is the outgoing // policy for node 2. - case !channel.IsNode1 && !isEdge1: + case !channel.IsNode1 && !policy.IsNode1(): channel.OutPolicySet = true policy.InboundFee.WhenSome(func(fee lnwire.Fee) { channel.InboundFee = fee diff --git a/graph/db/models/cached_edge_policy.go b/graph/db/models/cached_edge_policy.go index 35614c5f1..40b0d9212 100644 --- a/graph/db/models/cached_edge_policy.go +++ b/graph/db/models/cached_edge_policy.go @@ -75,6 +75,18 @@ func (c *CachedEdgePolicy) ComputeFee( return c.FeeBaseMSat + (amt*c.FeeProportionalMillionths)/feeRateParts } +// IsDisabled returns true if the channel is disabled in the direction from the +// advertising node. +func (c *CachedEdgePolicy) IsDisabled() bool { + return c.ChannelFlags&lnwire.ChanUpdateDisabled != 0 +} + +// IsNode1 returns true if this policy was announced by the channel's node_1 +// node. +func (c *CachedEdgePolicy) IsNode1() bool { + return c.ChannelFlags&lnwire.ChanUpdateDirection == 0 +} + // NewCachedPolicy turns a full policy into a minimal one that can be cached. func NewCachedPolicy(policy *ChannelEdgePolicy) *CachedEdgePolicy { return &CachedEdgePolicy{ diff --git a/routing/unified_edges.go b/routing/unified_edges.go index a18547485..9e28a53c0 100644 --- a/routing/unified_edges.go +++ b/routing/unified_edges.go @@ -360,9 +360,7 @@ func (u *edgeUnifier) getEdgeNetwork(netAmtReceived lnwire.MilliSatoshi, } // For network channels, skip the disabled ones. - edgeFlags := edge.policy.ChannelFlags - isDisabled := edgeFlags&lnwire.ChanUpdateDisabled != 0 - if isDisabled { + if edge.policy.IsDisabled() { log.Debugf("Skipped edge %v due to it being disabled", edge.policy.ChannelID) continue