2
0
mirror of https://github.com/lightninglabs/loop synced 2024-11-08 01:10:29 +00:00

Merge pull request #377 from bhandras/chainnoitifer_fix

loop: wait for chain notifier server to start
This commit is contained in:
András Bánki-Horváth 2021-04-29 12:21:38 +02:00 committed by GitHub
commit ef296e9c74
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3,6 +3,7 @@ package loop
import (
"context"
"fmt"
"strings"
"sync"
"sync/atomic"
"time"
@ -52,10 +53,37 @@ func newExecutor(cfg *executorConfig) *executor {
func (s *executor) run(mainCtx context.Context,
statusChan chan<- SwapInfo) error {
blockEpochChan, blockErrorChan, err :=
s.lnd.ChainNotifier.RegisterBlockEpochNtfn(mainCtx)
if err != nil {
return err
var (
err error
blockEpochChan <-chan int32
blockErrorChan <-chan error
)
for {
blockEpochChan, blockErrorChan, err =
s.lnd.ChainNotifier.RegisterBlockEpochNtfn(mainCtx)
if err != nil {
if strings.Contains(err.Error(),
"in the process of starting") {
log.Warnf("LND chain notifier server not " +
"ready yet, retrying with delay")
// Give chain notifier some time to start and
// try to re-attempt block epoch subscription.
select {
case <-time.After(500 * time.Millisecond):
continue
case <-mainCtx.Done():
return err
}
}
return err
}
break
}
// Before starting, make sure we have an up to date block height.