• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

lightningnetwork / lnd / 13566028875

27 Feb 2025 12:09PM UTC coverage: 49.396% (-9.4%) from 58.748%
13566028875

Pull #9555

github

ellemouton
graph/db: populate the graph cache in Start instead of during construction

In this commit, we move the graph cache population logic out of the
ChannelGraph constructor and into its Start method instead.
Pull Request #9555: graph: extract cache from CRUD [6]

34 of 54 new or added lines in 4 files covered. (62.96%)

27464 existing lines in 436 files now uncovered.

101095 of 204664 relevant lines covered (49.4%)

1.54 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/channeldb/migration29/migration.go
1
package migration29
2

3
import (
4
        "bytes"
5

6
        "github.com/btcsuite/btcd/wire"
7
        "github.com/lightningnetwork/lnd/kvdb"
8
)
9

10
var (
11
        // outpointBucket is the bucket that stores the set of outpoints we
12
        // know about.
13
        outpointBucket = []byte("outpoint-bucket")
14

15
        // chanIDBucket is the bucket that stores the set of ChannelID's we
16
        // know about.
17
        chanIDBucket = []byte("chan-id-bucket")
18
)
19

20
// MigrateChanID populates the ChannelID index by using the set of outpoints
21
// retrieved from the outpoint bucket.
UNCOV
22
func MigrateChanID(tx kvdb.RwTx) error {
×
UNCOV
23
        log.Info("Populating ChannelID index")
×
UNCOV
24

×
UNCOV
25
        // First we'll retrieve the set of outpoints we know about.
×
UNCOV
26
        ops, err := fetchOutPoints(tx)
×
UNCOV
27
        if err != nil {
×
28
                return err
×
29
        }
×
30

UNCOV
31
        return populateChanIDIndex(tx, ops)
×
32
}
33

34
// fetchOutPoints loops through the outpointBucket and returns each stored
35
// outpoint.
UNCOV
36
func fetchOutPoints(tx kvdb.RwTx) ([]*wire.OutPoint, error) {
×
UNCOV
37
        var ops []*wire.OutPoint
×
UNCOV
38

×
UNCOV
39
        bucket := tx.ReadBucket(outpointBucket)
×
UNCOV
40

×
UNCOV
41
        err := bucket.ForEach(func(k, _ []byte) error {
×
UNCOV
42
                var op wire.OutPoint
×
UNCOV
43
                r := bytes.NewReader(k)
×
UNCOV
44
                if err := readOutpoint(r, &op); err != nil {
×
45
                        return err
×
46
                }
×
47

UNCOV
48
                ops = append(ops, &op)
×
UNCOV
49
                return nil
×
50
        })
UNCOV
51
        if err != nil {
×
52
                return nil, err
×
53
        }
×
54

UNCOV
55
        return ops, nil
×
56
}
57

58
// populateChanIDIndex uses the set of retrieved outpoints and populates the
59
// ChannelID index.
UNCOV
60
func populateChanIDIndex(tx kvdb.RwTx, ops []*wire.OutPoint) error {
×
UNCOV
61
        bucket := tx.ReadWriteBucket(chanIDBucket)
×
UNCOV
62

×
UNCOV
63
        for _, op := range ops {
×
UNCOV
64
                chanID := NewChanIDFromOutPoint(op)
×
UNCOV
65

×
UNCOV
66
                if err := bucket.Put(chanID[:], []byte{}); err != nil {
×
67
                        return err
×
68
                }
×
69
        }
70

UNCOV
71
        return nil
×
72
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc