diff --git a/daemon/backend.go b/daemon/backend.go index b4bbf9f39e102c00adfbd2395ee13bebc2adb361..c9a302662f3737e8cedf5fc54b6ccfdde0c3b531 100644 --- a/daemon/backend.go +++ b/daemon/backend.go @@ -26,6 +26,7 @@ type Backend struct { sync.RWMutex daemon *Daemon status map[string]*status + wg sync.WaitGroup } // NewBackend create an instance of backend @@ -33,6 +34,7 @@ func (d *Daemon) NewBackend() { d.backend = &Backend{ daemon: d, status: make(map[string]*status), + wg: sync.WaitGroup{}, } } diff --git a/daemon/build.go b/daemon/build.go index f84c69cd1908468f3b85bc99fdfa3fe227929e16..72fe07466cbe84eaf2bed0bcdb46b7faa39a2942 100644 --- a/daemon/build.go +++ b/daemon/build.go @@ -31,6 +31,8 @@ import ( // Build receives a build request and build an image func (b *Backend) Build(req *pb.BuildRequest, stream pb.Control_BuildServer) (err error) { // nolint:gocyclo + b.wg.Add(1) + defer b.wg.Done() logrus.WithFields(logrus.Fields{ "BuildType": req.GetBuildType(), "BuildID": req.GetBuildID(), diff --git a/daemon/daemon.go b/daemon/daemon.go index 0ca4fe3e77ce84aea18b694b8ae9ebc3908d11d5..5c92983021365ca985bc182d2dd5704fe5af17ea 100644 --- a/daemon/daemon.go +++ b/daemon/daemon.go @@ -126,6 +126,7 @@ func (d *Daemon) Run() error { systemd.NotifySystemStopping() d.grpc.server.GracefulStop() + d.backend.wg.Wait() return err }