From a94648e9dcee867892f60f9971fa6584aacc376c Mon Sep 17 00:00:00 2001 From: Olaoluwa Osuntokun Date: Sun, 28 Jan 2018 14:48:28 -0800 Subject: [PATCH] channeldb: properly use a read-transaction in FetchChannelEdgesByOutpoint MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before this commit, we’d unnecessarily use a write transaction within the FetchChannelEdgesByOutpoint. This is wasteful as the function only actually reads items from the database, and doesn’t attempt any mutations at all. --- channeldb/graph.go | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/channeldb/graph.go b/channeldb/graph.go index 945036f8..eca5f9c6 100644 --- a/channeldb/graph.go +++ b/channeldb/graph.go @@ -1375,31 +1375,31 @@ func (c *ChannelGraph) FetchChannelEdgesByOutpoint(op *wire.OutPoint) (*ChannelE policy2 *ChannelEdgePolicy ) - err := c.db.Update(func(tx *bolt.Tx) error { + err := c.db.View(func(tx *bolt.Tx) error { // First, grab the node bucket. This will be used to populate // the Node pointers in each edge read from disk. - nodes, err := tx.CreateBucketIfNotExists(nodeBucket) - if err != nil { - return err + nodes := tx.Bucket(nodeBucket) + if nodes == nil { + return ErrGraphNotFound } // Next, grab the edge bucket which stores the edges, and also // the index itself so we can group the directed edges together // logically. - edges, err := tx.CreateBucketIfNotExists(edgeBucket) - if err != nil { - return err + edges := tx.Bucket(edgeBucket) + if edges == nil { + return ErrGraphNoEdgesFound } - edgeIndex, err := edges.CreateBucketIfNotExists(edgeIndexBucket) - if err != nil { - return err + edgeIndex := edges.Bucket(edgeIndexBucket) + if edgeIndex == nil { + return ErrGraphNoEdgesFound } // If the channel's outpoint doesn't exist within the outpoint // index, then the edge does not exist. - chanIndex, err := edges.CreateBucketIfNotExists(channelPointBucket) - if err != nil { - return err + chanIndex := edges.Bucket(channelPointBucket) + if chanIndex == nil { + return ErrGraphNoEdgesFound } var b bytes.Buffer if err := writeOutpoint(&b, op); err != nil {