channeldb: set restored chan status within RestoreChannelShells

In this commit, we move the location where we restore the channel status
to within the `RestoreChannelShells` method itself. Before this commit,
we attempted to use `ApplyChanStatus` which creates a DB transaction and
relies on a fully populated channel state, which in the restoration
case, we don't yet have.
This commit is contained in:
Olaoluwa Osuntokun 2019-03-10 16:22:58 -07:00
parent 13e7244d14
commit b93ff26265
No known key found for this signature in database
GPG Key ID: CE58F7F8E20FD9A2
2 changed files with 6 additions and 10 deletions

@ -906,6 +906,12 @@ func (d *DB) RestoreChannelShells(channelShells ...*ChannelShell) error {
for _, channelShell := range channelShells { for _, channelShell := range channelShells {
channel := channelShell.Chan channel := channelShell.Chan
// When we make a channel, we mark that the channel has
// been restored, this will signal to other sub-systems
// to not attempt to use the channel as if it was a
// regular one.
channel.chanStatus |= ChanStatusRestored
// First, we'll attempt to create a new open channel // First, we'll attempt to create a new open channel
// and link node for this channel. If the channel // and link node for this channel. If the channel
// already exists, then in order to ensure this method // already exists, then in order to ensure this method

@ -101,16 +101,6 @@ func (c *chanDBRestorer) openChannelShell(backup chanbackup.Single) (
}, },
} }
// TODO(roasbeef): move this mapping elsewhere?
// When we make a channel, we mark that the channel has been restored,
// this will signal to other sub-systems to not attempt to use the
// channel as if it was a regular one.
chanStatus := channeldb.ChanStatusDefault |
channeldb.ChanStatusRestored
chanShell.Chan.ApplyChanStatus(chanStatus)
return &chanShell, nil return &chanShell, nil
} }