mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-02-22 22:25:24 +01:00
channeldb+server: prune link nodes on startup
In this commit, we extend the server's functionality to prune link nodes on startup. Since we currently only decide whether to prune a link node from the database based on a channel close, it's possible that we have link nodes lingering from before this functionality was added on.
This commit is contained in:
parent
38b52df51f
commit
0aa1f39af8
2 changed files with 26 additions and 1 deletions
|
@ -630,6 +630,26 @@ func (db *DB) pruneLinkNode(tx *bolt.Tx, remotePub *btcec.PublicKey) error {
|
||||||
return db.deleteLinkNode(tx, remotePub)
|
return db.deleteLinkNode(tx, remotePub)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PruneLinkNodes attempts to prune all link nodes found within the databse with
|
||||||
|
// whom we no longer have any open channels with.
|
||||||
|
func (db *DB) PruneLinkNodes() error {
|
||||||
|
return db.Update(func(tx *bolt.Tx) error {
|
||||||
|
linkNodes, err := db.fetchAllLinkNodes(tx)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, linkNode := range linkNodes {
|
||||||
|
err := db.pruneLinkNode(tx, linkNode.IdentityPub)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// syncVersions function is used for safe db version synchronization. It
|
// syncVersions function is used for safe db version synchronization. It
|
||||||
// applies migration functions to the current database and recovers the
|
// applies migration functions to the current database and recovers the
|
||||||
// previous state of db if at least one error/panic appeared during migration.
|
// previous state of db if at least one error/panic appeared during migration.
|
||||||
|
|
|
@ -759,7 +759,12 @@ func (s *server) Start() error {
|
||||||
|
|
||||||
// With all the relevant sub-systems started, we'll now attempt to
|
// With all the relevant sub-systems started, we'll now attempt to
|
||||||
// establish persistent connections to our direct channel collaborators
|
// establish persistent connections to our direct channel collaborators
|
||||||
// within the network.
|
// within the network. Before doing so however, we'll prune our set of
|
||||||
|
// link nodes found within the database to ensure we don't reconnect to
|
||||||
|
// any nodes we no longer have open channels with.
|
||||||
|
if err := s.chanDB.PruneLinkNodes(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
if err := s.establishPersistentConnections(); err != nil {
|
if err := s.establishPersistentConnections(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue