watchtower/wtclient/client: ensure dispatcher can force quit...

during session creation.
This commit is contained in:
Conner Fromknecht 2019-04-23 20:07:46 -07:00
parent 9603bfa602
commit 71f72894f8
No known key found for this signature in database
GPG Key ID: E7D737B67FA592C7

@ -356,9 +356,6 @@ func (c *TowerClient) ForceQuit() {
c.forced.Do(func() {
log.Infof("Force quitting watchtower client")
// Cancel log message from stop.
close(c.forceQuit)
// 1. Shutdown the backup queue, which will prevent any further
// updates from being accepted. In practice, the links should be
// shutdown before the client has been stopped, so all updates
@ -369,6 +366,7 @@ func (c *TowerClient) ForceQuit() {
// dispatcher to exit. The backup queue will signal it's
// completion to the dispatcher, which releases the wait group
// after all tasks have been assigned to session queues.
close(c.forceQuit)
c.wg.Wait()
// 3. Since all valid tasks have been assigned to session
@ -512,6 +510,9 @@ func (c *TowerClient) backupDispatcher() {
case <-c.statTicker.C:
log.Infof("Client stats: %s", c.stats)
case <-c.forceQuit:
return
}
// No active session queue but have additional sessions.