提交 bccd9c07 编写于 作者: O openeuler-ci-bot 提交者: Gitee

!47 isula-build: fix goroutine leak because of Status channels waiting

Merge pull request !47 from Vanient/master
......@@ -62,6 +62,7 @@ func (b *Backend) Build(req *pb.BuildRequest, stream pb.Control_BuildServer) (er
eg, ctx = errgroup.WithContext(ctx)
eg.Go(func() error {
b.syncBuildStatus(req.BuildID) <- struct{}{}
close(b.status[req.BuildID].startBuild)
imageID, err = builder.Build()
// in case there is error during Build stage, the backend will always waiting for content write into
......
......@@ -32,7 +32,12 @@ func (b *Backend) Status(req *pb.StatusRequest, stream pb.Control_StatusServer)
}).Info("StatusRequest received")
// waiting for Build start first so that the builder with req.BuildID will be set already
<-b.syncBuildStatus(req.BuildID)
select {
case <-b.syncBuildStatus(req.BuildID):
case <-stream.Context().Done():
b.deleteStatus(req.BuildID)
return nil
}
builder, err := b.daemon.Builder(req.BuildID)
if err != nil {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册