Skip to content

Commit 3ea86bf

Browse files
committed
graph/db: let GraphCache.AddChannel take cached edge polies
So that the call-sites of this method dont necessarily need to fetch all the data required to populate the full ChannelEdgePolicy.
1 parent f95588c commit 3ea86bf

File tree

3 files changed

+27
-22
lines changed

3 files changed

+27
-22
lines changed

graph/db/graph.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,11 @@ func (c *ChannelGraph) populateCache() error {
177177
err = c.V1Store.ForEachChannel(func(info *models.ChannelEdgeInfo,
178178
policy1, policy2 *models.ChannelEdgePolicy) error {
179179

180-
c.graphCache.AddChannel(info, policy1, policy2)
180+
c.graphCache.AddChannel(
181+
info,
182+
models.NewCachedPolicy(policy1),
183+
models.NewCachedPolicy(policy2),
184+
)
181185

182186
return nil
183187
})
@@ -347,7 +351,11 @@ func (c *ChannelGraph) MarkEdgeLive(chanID uint64) error {
347351

348352
info := infos[0]
349353

350-
c.graphCache.AddChannel(info.Info, info.Policy1, info.Policy2)
354+
c.graphCache.AddChannel(
355+
info.Info,
356+
models.NewCachedPolicy(info.Policy1),
357+
models.NewCachedPolicy(info.Policy2),
358+
)
351359
}
352360

353361
return nil

graph/db/graph_cache.go

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ func (c *GraphCache) AddNodeFeatures(node route.Vertex,
115115
// and policy flags automatically. The policy will be set as the outgoing policy
116116
// on one node and the incoming policy on the peer's side.
117117
func (c *GraphCache) AddChannel(info *models.ChannelEdgeInfo,
118-
policy1 *models.ChannelEdgePolicy, policy2 *models.ChannelEdgePolicy) {
118+
policy1, policy2 *models.CachedEdgePolicy) {
119119

120120
if info == nil {
121121
return
@@ -147,21 +147,17 @@ func (c *GraphCache) AddChannel(info *models.ChannelEdgeInfo,
147147
// of node 2 then we have the policy 1 as seen from node 1.
148148
if policy1 != nil {
149149
fromNode, toNode := info.NodeKey1Bytes, info.NodeKey2Bytes
150-
if policy1.ToNode != info.NodeKey2Bytes {
150+
if !policy1.IsNode1() {
151151
fromNode, toNode = toNode, fromNode
152152
}
153-
c.UpdatePolicy(
154-
models.NewCachedPolicy(policy1), fromNode, toNode,
155-
)
153+
c.UpdatePolicy(policy1, fromNode, toNode)
156154
}
157155
if policy2 != nil {
158156
fromNode, toNode := info.NodeKey2Bytes, info.NodeKey1Bytes
159-
if policy2.ToNode != info.NodeKey1Bytes {
157+
if policy2.IsNode1() {
160158
fromNode, toNode = toNode, fromNode
161159
}
162-
c.UpdatePolicy(
163-
models.NewCachedPolicy(policy2), fromNode, toNode,
164-
)
160+
c.UpdatePolicy(policy2, fromNode, toNode)
165161
}
166162
}
167163

graph/db/graph_cache_test.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,20 +43,21 @@ func TestGraphCacheAddNode(t *testing.T) {
4343
FeeRate: 20,
4444
}
4545

46-
outPolicy1 := &models.ChannelEdgePolicy{
46+
outPolicy1 := &models.CachedEdgePolicy{
4747
ChannelID: 1000,
4848
ChannelFlags: lnwire.ChanUpdateChanFlags(channelFlagA),
49-
ToNode: nodeB,
49+
ToNodePubKey: func() route.Vertex {
50+
return nodeB
51+
},
5052
// Define an inbound fee.
5153
InboundFee: fn.Some(inboundFee),
52-
ExtraOpaqueData: []byte{
53-
253, 217, 3, 8, 0, 0, 0, 10, 0, 0, 0, 20,
54-
},
5554
}
56-
inPolicy1 := &models.ChannelEdgePolicy{
55+
inPolicy1 := &models.CachedEdgePolicy{
5756
ChannelID: 1000,
5857
ChannelFlags: lnwire.ChanUpdateChanFlags(channelFlagB),
59-
ToNode: nodeA,
58+
ToNodePubKey: func() route.Vertex {
59+
return nodeA
60+
},
6061
}
6162
cache := NewGraphCache(10)
6263
cache.AddNodeFeatures(nodeA, lnwire.EmptyFeatureVector())
@@ -120,7 +121,7 @@ func TestGraphCacheAddNode(t *testing.T) {
120121
runTest(pubKey2, pubKey1)
121122
}
122123

123-
func assertCachedPolicyEqual(t *testing.T, original *models.ChannelEdgePolicy,
124+
func assertCachedPolicyEqual(t *testing.T, original,
124125
cached *models.CachedEdgePolicy) {
125126

126127
require.Equal(t, original.ChannelID, cached.ChannelID)
@@ -134,7 +135,7 @@ func assertCachedPolicyEqual(t *testing.T, original *models.ChannelEdgePolicy,
134135
t, original.FeeProportionalMillionths,
135136
cached.FeeProportionalMillionths,
136137
)
137-
require.Equal(
138-
t, route.Vertex(original.ToNode), cached.ToNodePubKey(),
139-
)
138+
if original.ToNodePubKey != nil {
139+
require.Equal(t, original.ToNodePubKey(), cached.ToNodePubKey())
140+
}
140141
}

0 commit comments

Comments
 (0)