mirror of
https://github.com/lightninglabs/loop.git
synced 2026-08-13 12:33:03 +02:00
loop: wait for chain notifier server to start
This commit is contained in:
parent
c9cb57faa2
commit
a0b67da590
1 changed files with 32 additions and 4 deletions
36
executor.go
36
executor.go
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue