From d7029871b1e09a833272c2422acfa011aa69a97e Mon Sep 17 00:00:00 2001 From: Jonathan Gold Date: Thu, 26 Apr 2018 19:33:43 -0400 Subject: [PATCH] engine: resources: nspawn: Remove godbus channel buffer https://github.com/godbus/dbus/issues/94 is fixed with https://github.com/godbus/dbus/pull/105, so the buffered channel is no longer necessary. --- engine/resources/nspawn.go | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/engine/resources/nspawn.go b/engine/resources/nspawn.go index 9fc0062e..43661591 100644 --- a/engine/resources/nspawn.go +++ b/engine/resources/nspawn.go @@ -151,6 +151,7 @@ func (obj *NspawnRes) Watch() error { if err != nil { return errwrap.Wrapf(err, "failed to connect to bus") } + defer bus.Close() // add a match rule to match messages going through the message bus call := bus.BusObject().Call("org.freedesktop.DBus.AddMatch", 0, @@ -160,10 +161,10 @@ func (obj *NspawnRes) Watch() error { if err := call.Err; err != nil { return err } - // TODO: verify that implementation doesn't deadlock if there are unread - // messages left in the channel - busChan := make(chan *dbus.Signal, 10) + busChan := make(chan *dbus.Signal) + defer close(busChan) bus.Signal(busChan) + defer bus.RemoveSignal(busChan) // not needed here, but nice for symmetry // notify engine that we're running if err := obj.init.Running(); err != nil { @@ -171,10 +172,6 @@ func (obj *NspawnRes) Watch() error { } var send = false // send event? - - defer close(busChan) - defer bus.Close() - defer bus.RemoveSignal(busChan) for { select { case event := <-busChan: