mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-10-10 21:32:32 +02:00
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.
This commit is contained in:
@@ -177,7 +177,11 @@ func (c *ChannelGraph) populateCache() error {
|
|||||||
err = c.V1Store.ForEachChannel(func(info *models.ChannelEdgeInfo,
|
err = c.V1Store.ForEachChannel(func(info *models.ChannelEdgeInfo,
|
||||||
policy1, policy2 *models.ChannelEdgePolicy) error {
|
policy1, policy2 *models.ChannelEdgePolicy) error {
|
||||||
|
|
||||||
c.graphCache.AddChannel(info, policy1, policy2)
|
c.graphCache.AddChannel(
|
||||||
|
info,
|
||||||
|
models.NewCachedPolicy(policy1),
|
||||||
|
models.NewCachedPolicy(policy2),
|
||||||
|
)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
@@ -347,7 +351,11 @@ func (c *ChannelGraph) MarkEdgeLive(chanID uint64) error {
|
|||||||
|
|
||||||
info := infos[0]
|
info := infos[0]
|
||||||
|
|
||||||
c.graphCache.AddChannel(info.Info, info.Policy1, info.Policy2)
|
c.graphCache.AddChannel(
|
||||||
|
info.Info,
|
||||||
|
models.NewCachedPolicy(info.Policy1),
|
||||||
|
models.NewCachedPolicy(info.Policy2),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@@ -115,7 +115,7 @@ func (c *GraphCache) AddNodeFeatures(node route.Vertex,
|
|||||||
// and policy flags automatically. The policy will be set as the outgoing policy
|
// and policy flags automatically. The policy will be set as the outgoing policy
|
||||||
// on one node and the incoming policy on the peer's side.
|
// on one node and the incoming policy on the peer's side.
|
||||||
func (c *GraphCache) AddChannel(info *models.ChannelEdgeInfo,
|
func (c *GraphCache) AddChannel(info *models.ChannelEdgeInfo,
|
||||||
policy1 *models.ChannelEdgePolicy, policy2 *models.ChannelEdgePolicy) {
|
policy1, policy2 *models.CachedEdgePolicy) {
|
||||||
|
|
||||||
if info == nil {
|
if info == nil {
|
||||||
return
|
return
|
||||||
@@ -147,21 +147,17 @@ func (c *GraphCache) AddChannel(info *models.ChannelEdgeInfo,
|
|||||||
// of node 2 then we have the policy 1 as seen from node 1.
|
// of node 2 then we have the policy 1 as seen from node 1.
|
||||||
if policy1 != nil {
|
if policy1 != nil {
|
||||||
fromNode, toNode := info.NodeKey1Bytes, info.NodeKey2Bytes
|
fromNode, toNode := info.NodeKey1Bytes, info.NodeKey2Bytes
|
||||||
if policy1.ToNode != info.NodeKey2Bytes {
|
if !policy1.IsNode1() {
|
||||||
fromNode, toNode = toNode, fromNode
|
fromNode, toNode = toNode, fromNode
|
||||||
}
|
}
|
||||||
c.UpdatePolicy(
|
c.UpdatePolicy(policy1, fromNode, toNode)
|
||||||
models.NewCachedPolicy(policy1), fromNode, toNode,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
if policy2 != nil {
|
if policy2 != nil {
|
||||||
fromNode, toNode := info.NodeKey2Bytes, info.NodeKey1Bytes
|
fromNode, toNode := info.NodeKey2Bytes, info.NodeKey1Bytes
|
||||||
if policy2.ToNode != info.NodeKey1Bytes {
|
if policy2.IsNode1() {
|
||||||
fromNode, toNode = toNode, fromNode
|
fromNode, toNode = toNode, fromNode
|
||||||
}
|
}
|
||||||
c.UpdatePolicy(
|
c.UpdatePolicy(policy2, fromNode, toNode)
|
||||||
models.NewCachedPolicy(policy2), fromNode, toNode,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -43,20 +43,21 @@ func TestGraphCacheAddNode(t *testing.T) {
|
|||||||
FeeRate: 20,
|
FeeRate: 20,
|
||||||
}
|
}
|
||||||
|
|
||||||
outPolicy1 := &models.ChannelEdgePolicy{
|
outPolicy1 := &models.CachedEdgePolicy{
|
||||||
ChannelID: 1000,
|
ChannelID: 1000,
|
||||||
ChannelFlags: lnwire.ChanUpdateChanFlags(channelFlagA),
|
ChannelFlags: lnwire.ChanUpdateChanFlags(channelFlagA),
|
||||||
ToNode: nodeB,
|
ToNodePubKey: func() route.Vertex {
|
||||||
|
return nodeB
|
||||||
|
},
|
||||||
// Define an inbound fee.
|
// Define an inbound fee.
|
||||||
InboundFee: fn.Some(inboundFee),
|
InboundFee: fn.Some(inboundFee),
|
||||||
ExtraOpaqueData: []byte{
|
|
||||||
253, 217, 3, 8, 0, 0, 0, 10, 0, 0, 0, 20,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
inPolicy1 := &models.ChannelEdgePolicy{
|
inPolicy1 := &models.CachedEdgePolicy{
|
||||||
ChannelID: 1000,
|
ChannelID: 1000,
|
||||||
ChannelFlags: lnwire.ChanUpdateChanFlags(channelFlagB),
|
ChannelFlags: lnwire.ChanUpdateChanFlags(channelFlagB),
|
||||||
ToNode: nodeA,
|
ToNodePubKey: func() route.Vertex {
|
||||||
|
return nodeA
|
||||||
|
},
|
||||||
}
|
}
|
||||||
cache := NewGraphCache(10)
|
cache := NewGraphCache(10)
|
||||||
cache.AddNodeFeatures(nodeA, lnwire.EmptyFeatureVector())
|
cache.AddNodeFeatures(nodeA, lnwire.EmptyFeatureVector())
|
||||||
@@ -120,7 +121,7 @@ func TestGraphCacheAddNode(t *testing.T) {
|
|||||||
runTest(pubKey2, pubKey1)
|
runTest(pubKey2, pubKey1)
|
||||||
}
|
}
|
||||||
|
|
||||||
func assertCachedPolicyEqual(t *testing.T, original *models.ChannelEdgePolicy,
|
func assertCachedPolicyEqual(t *testing.T, original,
|
||||||
cached *models.CachedEdgePolicy) {
|
cached *models.CachedEdgePolicy) {
|
||||||
|
|
||||||
require.Equal(t, original.ChannelID, cached.ChannelID)
|
require.Equal(t, original.ChannelID, cached.ChannelID)
|
||||||
@@ -134,7 +135,7 @@ func assertCachedPolicyEqual(t *testing.T, original *models.ChannelEdgePolicy,
|
|||||||
t, original.FeeProportionalMillionths,
|
t, original.FeeProportionalMillionths,
|
||||||
cached.FeeProportionalMillionths,
|
cached.FeeProportionalMillionths,
|
||||||
)
|
)
|
||||||
require.Equal(
|
if original.ToNodePubKey != nil {
|
||||||
t, route.Vertex(original.ToNode), cached.ToNodePubKey(),
|
require.Equal(t, original.ToNodePubKey(), cached.ToNodePubKey())
|
||||||
)
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user