lnd: add interrupt handler to handle shutdown requests while syncing

chain backend
This commit is contained in:
Wilmer Paulino 2018-05-23 02:55:30 -04:00
parent 5c42a88038
commit 4a200d28eb
No known key found for this signature in database
GPG Key ID: 6DF57B9F9514972F
3 changed files with 16 additions and 14 deletions

19
lnd.go
View File

@ -570,7 +570,20 @@ func lndMain() error {
ltndLog.Infof("Waiting for chain backend to finish sync, "+
"start_height=%v", bestHeight)
// We'll add an interrupt handler in order to process shutdown
// requests while the chain backend syncs.
addInterruptHandler(func() {
rpcServer.Stop()
fundingMgr.Stop()
})
for {
select {
case <-shutdownChannel:
return nil
default:
}
synced, _, err := activeChainControl.wallet.IsSynced()
if err != nil {
return err
@ -617,16 +630,12 @@ func lndMain() error {
}
addInterruptHandler(func() {
ltndLog.Infof("Gracefully shutting down the server...")
rpcServer.Stop()
fundingMgr.Stop()
server.Stop()
if pilot != nil {
pilot.Stop()
}
server.WaitForShutdown()
server.Stop()
})
// Wait for shutdown signal from either a graceful server stop or from

View File

@ -663,11 +663,6 @@ func (s *server) Stopped() bool {
return atomic.LoadInt32(&s.shutdown) != 0
}
// WaitForShutdown blocks until all goroutines have been stopped.
func (s *server) WaitForShutdown() {
s.wg.Wait()
}
// initNetworkBootstrappers initializes a set of network peer bootstrappers
// based on the server, and currently active bootstrap mechanisms as defined
// within the current configuration.

View File

@ -48,10 +48,8 @@ func mainInterruptHandler() {
isShutdown = true
ltndLog.Infof("Shutting down...")
// Run handlers in LIFO order.
for i := range interruptCallbacks {
idx := len(interruptCallbacks) - 1 - i
callback := interruptCallbacks[idx]
// Execute the interrupt callbacks in FIFO order.
for _, callback := range interruptCallbacks {
callback()
}