diff --git a/channeldb/channel.go b/channeldb/channel.go index c2eaba5ad..9332f50e3 100644 --- a/channeldb/channel.go +++ b/channeldb/channel.go @@ -596,6 +596,7 @@ func (c *OpenChannel) hasChanStatus(status ChannelStatus) bool { // RefreshShortChanID updates the in-memory channel state using the latest // value observed on disk. +// // TODO: the name of this function should be changed to reflect the fact that // it is not only refreshing the short channel id but all the channel state. // maybe Refresh/Reload? @@ -611,7 +612,8 @@ func (c *OpenChannel) RefreshShortChanID() error { return err } - // populating the in-memory channel with the info fetched from disk. + // We'll re-populating the in-memory channel with the info + // fetched from disk. if err := fetchChanInfo(chanBucket, c); err != nil { return fmt.Errorf("unable to fetch chan info: %v", err) } diff --git a/lntest/itest/lnd_test.go b/lntest/itest/lnd_test.go index 5c011769c..07bca25b3 100644 --- a/lntest/itest/lnd_test.go +++ b/lntest/itest/lnd_test.go @@ -1221,30 +1221,34 @@ func testUnconfirmedChannelFunding(net *lntest.NetworkHarness, t *harnessTest) { // testPaymentFollowingChannelOpen tests that the channel transition from // 'pending' to 'open' state does not cause any inconsistencies within other -// subsystems trying to udpate the channel state in the db. We follow -// this transition with a payment that updates the commitment state and -// verify that the pending state is up to date. +// subsystems trying to udpate the channel state in the db. We follow this +// transition with a payment that updates the commitment state and verify that +// the pending state is up to date. func testPaymentFollowingChannelOpen(net *lntest.NetworkHarness, t *harnessTest) { ctxb := context.Background() - // We first establish a channel between Alice and Bob. const paymentAmt = btcutil.Amount(100) - ctxt, _ := context.WithTimeout(ctxb, channelOpenTimeout) channelCapacity := btcutil.Amount(paymentAmt * 1000) - pendingUpdate, err := net.OpenPendingChannel(ctxt, net.Alice, net.Bob, - channelCapacity, 0) + + // We first establish a channel between Alice and Bob. + ctxt, cancel := context.WithTimeout(ctxb, channelOpenTimeout) + defer cancel() + pendingUpdate, err := net.OpenPendingChannel( + ctxt, net.Alice, net.Bob, channelCapacity, 0, + ) if err != nil { t.Fatalf("unable to open channel: %v", err) } - // At this point, the channel's funding transaction will have - // been broadcast, but not confirmed. Alice and Bob's nodes + // At this point, the channel's funding transaction will have been + // broadcast, but not confirmed. Alice and Bob's nodes // should reflect this when queried via RPC. - ctxt, _ = context.WithTimeout(ctxb, defaultTimeout) + ctxt, cancel = context.WithTimeout(ctxb, defaultTimeout) + defer cancel() assertNumOpenChannelsPending(ctxt, t, net.Alice, net.Bob, 1) - // We are restarting Bob's node to let the link be created for the pending - // channel. + // We are restarting Bob's node to let the link be created for the + // pending channel. if err := net.RestartNode(net.Bob, nil); err != nil { t.Fatalf("Bob restart failed: %v", err) } @@ -1259,12 +1263,12 @@ func testPaymentFollowingChannelOpen(net *lntest.NetworkHarness, t *harnessTest) _ = mineBlocks(t, net, 6, 1)[0] // We verify that the chanel is open from both nodes point of view. - time.Sleep(time.Millisecond * 300) - ctxt, _ = context.WithTimeout(ctxb, defaultTimeout) + ctxt, cancel = context.WithTimeout(ctxb, defaultTimeout) + defer cancel() assertNumOpenChannelsPending(ctxt, t, net.Alice, net.Bob, 0) - // With the channel open, we'll create invoices for Bob that Alice - // will pay to in order to advance the state of the channel. + // With the channel open, we'll create invoices for Bob that Alice will + // pay to in order to advance the state of the channel. bobPayReqs, _, _, err := createPayReqs( net.Bob, paymentAmt, 1, ) @@ -1272,16 +1276,24 @@ func testPaymentFollowingChannelOpen(net *lntest.NetworkHarness, t *harnessTest) t.Fatalf("unable to create pay reqs: %v", err) } - // Send payment to Bob so there a chanel update to disk will be executed. - ctxt, _ = context.WithTimeout(ctxb, defaultTimeout) - _, err = net.Alice.SendPaymentSync(ctxt, - &lnrpc.SendRequest{PaymentRequest: bobPayReqs[0]}) + // Send payment to Bob so there a chanel update to disk will be + // executed. + ctxt, cancel = context.WithTimeout(ctxb, defaultTimeout) + defer cancel() + _, err = net.Alice.SendPaymentSync( + ctxt, + &lnrpc.SendRequest{ + PaymentRequest: bobPayReqs[0], + }, + ) if err != nil { t.Fatalf("unable to create payment stream for alice: %v", err) } - // At this point we want to make sure the channel is opened and not pending. - ctxt, _ = context.WithTimeout(ctxb, defaultTimeout) + // At this point we want to make sure the channel is opened and not + // pending. + ctxt, cancel = context.WithTimeout(ctxb, defaultTimeout) + defer cancel() res, err := net.Bob.ListChannels(ctxt, &lnrpc.ListChannelsRequest{}) if err != nil { t.Fatalf("unable to list bob channels: %v", err) @@ -1299,7 +1311,8 @@ func testPaymentFollowingChannelOpen(net *lntest.NetworkHarness, t *harnessTest) }, OutputIndex: pendingUpdate.OutputIndex, } - ctxt, _ = context.WithTimeout(ctxb, channelCloseTimeout) + ctxt, cancel = context.WithTimeout(ctxb, channelCloseTimeout) + defer cancel() closeChannelAndAssert(ctxt, t, net, net.Alice, chanPoint, false) }