Fix probe & app's shutdown to please signals.SignalHandlerLoop

Fixes:
```
not enough arguments in call to signals.SignalHandlerLoop
	have ()
	want (logging.Interface, ...signals.SignalReceiver)
```
This commit is contained in:
Marc Carré
2018-07-23 19:48:13 +02:00
parent e07b093b1c
commit bcbc462842
3 changed files with 28 additions and 7 deletions

View File

@@ -110,9 +110,10 @@ func (p *Probe) Start() {
}
// Stop stops the probe
func (p *Probe) Stop() {
func (p *Probe) Stop() error {
close(p.quit)
p.done.Wait()
return nil
}
// Publish will queue a report for immediate publication,

View File

@@ -19,6 +19,7 @@ import (
billing "github.com/weaveworks/billing-client"
"github.com/weaveworks/common/aws"
"github.com/weaveworks/common/logging"
"github.com/weaveworks/common/middleware"
"github.com/weaveworks/common/network"
"github.com/weaveworks/common/signals"
@@ -307,10 +308,27 @@ func appMain(flags appFlags) {
}()
// block until INT/TERM
signals.SignalHandlerLoop()
signals.SignalHandlerLoop(
logging.Logrus(log.StandardLogger()),
stopper{
Server: server,
StopTimeout: flags.stopTimeout,
},
)
}
// stopper adapts graceful.Server's interface to signals.SignalReceiver's interface.
type stopper struct {
Server *graceful.Server
StopTimeout time.Duration
}
// Stop implements signals.SignalReceiver's Stop method.
func (c stopper) Stop() error {
// stop listening, wait for any active connections to finish
server.Stop(flags.stopTimeout)
<-server.StopChan()
c.Server.Stop(c.StopTimeout)
<-c.Server.StopChan()
return nil
}
func newWeavePublisher(dockerEndpoint, weaveAddr, weaveHostname, containerName string) (*app.WeavePublisher, error) {

View File

@@ -14,6 +14,7 @@ import (
"github.com/prometheus/client_golang/prometheus"
log "github.com/sirupsen/logrus"
"github.com/weaveworks/common/logging"
"github.com/weaveworks/common/network"
"github.com/weaveworks/common/sanitize"
"github.com/weaveworks/common/signals"
@@ -304,7 +305,8 @@ func probeMain(flags probeFlags, targets []appclient.Target) {
maybeExportProfileData(flags)
p.Start()
defer p.Stop()
signals.SignalHandlerLoop()
signals.SignalHandlerLoop(
logging.Logrus(log.StandardLogger()),
p,
)
}