server: Move director interrupt handler to method

This commit is contained in:
Christian Provenzano 2022-05-11 20:41:10 -04:00
parent 655d171eca
commit b5b466088d
2 changed files with 11 additions and 9 deletions

View File

@ -45,9 +45,7 @@ func newDirector(lg *zap.Logger, urlsFunc GetProxyURLs, failureWait time.Duratio
stopc: make(chan struct{}),
donec: make(chan struct{}),
}
osutil.RegisterInterruptHandler(func() {
close(d.stopc)
})
osutil.RegisterInterruptHandler(d.stop)
d.refresh()
go func() {
defer close(d.donec)
@ -129,6 +127,15 @@ func (d *director) endpoints() []*endpoint {
return filtered
}
func (d *director) stop() {
close(d.stopc)
select {
case <-d.donec:
case <-time.After(time.Second):
d.lg.Warn("timed out waiting for director to stop")
}
}
func newEndpoint(lg *zap.Logger, u url.URL, failureWait time.Duration) *endpoint {
ep := endpoint{
lg: lg,

View File

@ -67,12 +67,7 @@ func TestNewDirectorScheme(t *testing.T) {
t.Errorf("#%d: want endpoints = %#v, got = %#v", i, tt.want, gep)
}
close(got.stopc)
select {
case <-got.donec:
case <-time.After(time.Second):
t.Fatalf("done took too long")
}
got.stop()
}
}