From 9e3bfd5864531047ca96a61109a4ea4e9da16959 Mon Sep 17 00:00:00 2001 From: Tonis Tiigi Date: Thu, 31 Mar 2016 09:48:20 -0700 Subject: [PATCH] Fix race between with event timer stopping early Signed-off-by: Tonis Tiigi (cherry picked from commit b38cee9f9c79d1f12001348303b78462d99664ed) --- api/server/router/system/system_routes.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/api/server/router/system/system_routes.go b/api/server/router/system/system_routes.go index a994a46eb7..defaa0d6ca 100644 --- a/api/server/router/system/system_routes.go +++ b/api/server/router/system/system_routes.go @@ -55,11 +55,10 @@ func (s *systemRouter) getEvents(ctx context.Context, w http.ResponseWriter, r * return err } - timer := time.NewTimer(0) - timer.Stop() + var timeout <-chan time.Time if until > 0 || untilNano > 0 { dur := time.Unix(until, untilNano).Sub(time.Now()) - timer = time.NewTimer(dur) + timeout = time.NewTimer(dur).C } ef, err := filters.FromParam(r.Form.Get("filters")) @@ -99,7 +98,7 @@ func (s *systemRouter) getEvents(ctx context.Context, w http.ResponseWriter, r * if err := enc.Encode(jev); err != nil { return err } - case <-timer.C: + case <-timeout: return nil case <-closeNotify: logrus.Debug("Client disconnected, stop sending events")