From 893c0cf843f8c6765574920a534bbc9ce0ff90fa Mon Sep 17 00:00:00 2001 From: Wilmer Paulino Date: Fri, 10 Apr 2020 18:31:46 -0700 Subject: [PATCH] rpcserver: omit uptime in ListChannels response if server not started If the server hasn't fully started yet, it's possible that the channel event store hasn't either, so it won't be able to consume any requests until then. To prevent blocking, we'll just omit the uptime related fields for now. --- rpcserver.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/rpcserver.go b/rpcserver.go index 0c0e14186..b8934859f 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -3318,11 +3318,18 @@ func createRPCOpenChannel(r *rpcServer, graph *channeldb.ChannelGraph, channel.CloseAddress = addresses[0].String() } - outpoint := dbChannel.FundingOutpoint + // If the server hasn't fully started yet, it's possible that the + // channel event store hasn't either, so it won't be able to consume any + // requests until then. To prevent blocking, we'll just omit the uptime + // related fields for now. + if !r.server.Started() { + return channel, nil + } // Get the lifespan observed by the channel event store. If the channel is // not known to the channel event store, return early because we cannot // calculate any further uptime information. + outpoint := dbChannel.FundingOutpoint startTime, endTime, err := r.server.chanEventStore.GetLifespan(outpoint) switch err { case chanfitness.ErrChannelNotFound: