@@ -248,51 +248,51 @@ func (c *ChannelGraph) startWorker() {
248
248
}
249
249
250
250
func (c * ChannelGraph ) enqueueWriteOperation (op func () error ) {
251
- // Send the operation to the channel; non-blocking if the buffer isn't full
251
+ // Send the operation to the channel.
252
+ // This is non-blocking as long as the buffer isn't full.
252
253
select {
253
254
case c .writeOps <- op :
254
255
// Operation enqueued successfully
255
256
default :
256
- // Handle the case where the channel is full
257
- // Could log an error, block until space is available, or drop the operation
258
- // For example, to block until space is available, remove the select and default case
259
257
log .Warn ("writeOps queue is full, operation not enqueued" )
260
258
}
261
259
}
262
260
263
- func (g * ChannelGraph ) populateGraphCache () {
261
+ func (c * ChannelGraph ) populateGraphCache () {
264
262
startTime := time .Now ()
265
263
log .Debugf ("Populating in-memory channel graph, this might " +
266
264
"take a while..." )
267
265
268
- err := g .ForEachNodeCacheable (
266
+ err := c .ForEachNodeCacheable (
269
267
func (tx kvdb.RTx , node GraphCacheNode ) error {
270
- g .graphCache .AddNodeFeatures (node )
268
+ c .graphCache .AddNodeFeatures (node )
271
269
272
270
return nil
273
271
},
274
272
)
275
273
if err != nil {
276
- g .graphCacheErr = err
274
+ c .graphCacheErr = err
277
275
return
278
276
}
279
277
280
- err = g .ForEachChannel (func (info * models.ChannelEdgeInfo ,
278
+ err = c .ForEachChannel (func (info * models.ChannelEdgeInfo ,
281
279
policy1 , policy2 * models.ChannelEdgePolicy ) error {
282
280
283
- g .graphCache .AddChannel (info , policy1 , policy2 )
281
+ c .graphCache .AddChannel (info , policy1 , policy2 )
284
282
285
283
return nil
286
284
})
287
285
if err != nil {
288
- g .graphCacheErr = err
286
+ c .graphCacheErr = err
289
287
return
290
288
}
291
289
292
- log .Debugf ("Finished populating in-memory channel graph (took " +
293
- "%v, %s)" , time .Since (startTime ), g .graphCache .Stats ())
290
+ if c .graphCache != nil {
291
+ log .Debugf ("Finished populating in-memory channel graph (took " +
292
+ "%v, %s)" , time .Since (startTime ), c .graphCache .Stats ())
293
+ }
294
294
295
- g .graphCacheReady .Store (true )
295
+ c .graphCacheReady .Store (true )
296
296
}
297
297
298
298
func (c * ChannelGraph ) getGraphCache () (* GraphCache , error ) {
@@ -302,8 +302,7 @@ func (c *ChannelGraph) getGraphCache() (*GraphCache, error) {
302
302
303
303
// Check if graph cache is ready without waiting
304
304
if ! c .graphCacheReady .Load () {
305
- // Return an error or a special indicator that cache is not ready
306
- // Caller should handle this case appropriately, maybe by queuing write operations
305
+ // Return an error to show that cache is not ready.
307
306
return nil , ErrGraphCacheNotReady
308
307
}
309
308
@@ -898,16 +897,18 @@ func (c *ChannelGraph) AddLightningNode(node *LightningNode,
898
897
Update : func (tx kvdb.RwTx ) error {
899
898
graphCache , err := c .getGraphCache ()
900
899
if err != nil {
901
- if err == ErrGraphCacheNotReady {
900
+ if errors . Is ( err , ErrGraphCacheNotReady ) {
902
901
// Queue this update function
903
902
c .enqueueWriteOperation (func () error {
904
903
return c .AddLightningNode (
905
904
node ,
906
905
op ... ,
907
906
)
908
907
})
908
+
909
909
return nil
910
910
}
911
+
911
912
return err
912
913
}
913
914
@@ -917,6 +918,7 @@ func (c *ChannelGraph) AddLightningNode(node *LightningNode,
917
918
)
918
919
err := graphCache .AddNode (tx , cNode )
919
920
if err != nil {
921
+
920
922
return err
921
923
}
922
924
}
@@ -1001,13 +1003,15 @@ func (c *ChannelGraph) DeleteLightningNode(nodePub route.Vertex) error {
1001
1003
1002
1004
graphCache , err := c .getGraphCache ()
1003
1005
if err != nil {
1004
- if err == ErrGraphCacheNotReady {
1006
+ if errors . Is ( err , ErrGraphCacheNotReady ) {
1005
1007
// Queue this delete function
1006
1008
c .enqueueWriteOperation (func () error {
1007
1009
return c .DeleteLightningNode (nodePub )
1008
1010
})
1011
+
1009
1012
return nil
1010
1013
}
1014
+
1011
1015
return err
1012
1016
}
1013
1017
@@ -1144,13 +1148,15 @@ func (c *ChannelGraph) addChannelEdge(tx kvdb.RwTx,
1144
1148
1145
1149
graphCache , err := c .getGraphCache ()
1146
1150
if err != nil {
1147
- if err == ErrGraphCacheNotReady {
1151
+ if errors . Is ( err , ErrGraphCacheNotReady ) {
1148
1152
// Queue this function
1149
1153
c .enqueueWriteOperation (func () error {
1150
1154
return c .addChannelEdge (tx , edge )
1151
1155
})
1156
+
1152
1157
return nil
1153
1158
}
1159
+
1154
1160
return err
1155
1161
}
1156
1162
@@ -1359,7 +1365,7 @@ func (c *ChannelGraph) UpdateChannelEdge(edge *models.ChannelEdgeInfo) error {
1359
1365
1360
1366
graphCache , err := c .getGraphCache ()
1361
1367
if err != nil {
1362
- if err == ErrGraphCacheNotReady {
1368
+ if errors . Is ( err , ErrGraphCacheNotReady ) {
1363
1369
// Queue this update function
1364
1370
c .enqueueWriteOperation (func () error {
1365
1371
return c .UpdateChannelEdge (edge )
@@ -1606,7 +1612,7 @@ func (c *ChannelGraph) pruneGraphNodes(nodes kvdb.RwBucket,
1606
1612
1607
1613
graphCache , err := c .getGraphCache ()
1608
1614
if err != nil {
1609
- if err == ErrGraphCacheNotReady {
1615
+ if errors . Is ( err , ErrGraphCacheNotReady ) {
1610
1616
// Queue this prune operation
1611
1617
c .enqueueWriteOperation (func () error {
1612
1618
return c .pruneGraphNodes (nodes , edgeIndex )
@@ -2660,10 +2666,18 @@ func (c *ChannelGraph) delChannelEdgeUnsafe(edges, edgeIndex, chanIndex,
2660
2666
2661
2667
graphCache , err := c .getGraphCache ()
2662
2668
if err != nil {
2663
- if err == ErrGraphCacheNotReady {
2669
+ if errors . Is ( err , ErrGraphCacheNotReady ) {
2664
2670
// Queue this delete function
2665
2671
c .enqueueWriteOperation (func () error {
2666
- return c .delChannelEdgeUnsafe (edges , edgeIndex , chanIndex , zombieIndex , chanID , isZombie , strictZombie )
2672
+ return c .delChannelEdgeUnsafe (
2673
+ edges ,
2674
+ edgeIndex ,
2675
+ chanIndex ,
2676
+ zombieIndex ,
2677
+ chanID ,
2678
+ isZombie ,
2679
+ strictZombie ,
2680
+ )
2667
2681
})
2668
2682
return nil
2669
2683
}
@@ -2929,7 +2943,7 @@ func updateEdgePolicy(tx kvdb.RwTx, edge *models.ChannelEdgePolicy,
2929
2943
2930
2944
graphCache , err := c .getGraphCache ()
2931
2945
if err != nil {
2932
- if err == ErrGraphCacheNotReady {
2946
+ if errors . Is ( err , ErrGraphCacheNotReady ) {
2933
2947
// Queue this update function
2934
2948
c .enqueueWriteOperation (func () error {
2935
2949
_ , err := updateEdgePolicy (tx , edge , c )
@@ -3822,10 +3836,14 @@ func (c *ChannelGraph) MarkEdgeZombie(chanID uint64,
3822
3836
3823
3837
graphCache , err := c .getGraphCache ()
3824
3838
if err != nil {
3825
- if err == ErrGraphCacheNotReady {
3839
+ if errors . Is ( err , ErrGraphCacheNotReady ) {
3826
3840
// Queue this function
3827
3841
c .enqueueWriteOperation (func () error {
3828
- return c .MarkEdgeZombie (chanID , pubKey1 , pubKey2 )
3842
+ return c .MarkEdgeZombie (
3843
+ chanID ,
3844
+ pubKey1 ,
3845
+ pubKey2 ,
3846
+ )
3829
3847
})
3830
3848
return nil
3831
3849
}
@@ -3918,7 +3936,7 @@ func (c *ChannelGraph) markEdgeLiveUnsafe(tx kvdb.RwTx, chanID uint64) error {
3918
3936
// won't use it for path finding.
3919
3937
graphCache , err := c .getGraphCache ()
3920
3938
if err != nil {
3921
- if err == ErrGraphCacheNotReady {
3939
+ if errors . Is ( err , ErrGraphCacheNotReady ) {
3922
3940
// Queue the operation to add the channel back.
3923
3941
c .enqueueWriteOperation (func () error {
3924
3942
return c .markEdgeLiveUnsafe (tx , chanID )
0 commit comments