From bbd13ebf007c6eaf58462279a7175de6891c424b Mon Sep 17 00:00:00 2001 From: xiadanni Date: Mon, 17 Aug 2020 19:47:46 +0800 Subject: [PATCH] isula-build: fix goroutine leaks because status channel not closed When parse dockerfile failed, status channel has not been closed, which causes goroutine leaks. So cleanup defer function which includes channel close should be put in the beginning of Build to avoid parse dockerfile or newstagebuilder returns error. Signed-off-by: xiadanni --- builder/dockerfile/builder.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) mode change 100755 => 100644 builder/dockerfile/builder.go diff --git a/builder/dockerfile/builder.go b/builder/dockerfile/builder.go old mode 100755 new mode 100644 index 130ba98..c5b3740 --- a/builder/dockerfile/builder.go +++ b/builder/dockerfile/builder.go @@ -408,6 +408,11 @@ func (b *Builder) Build() (string, error) { imageID string ) + // 6. defer cleanup + defer func() { + b.cleanup() + }() + // 1. parseFiles if err = b.parseFiles(); err != nil { return "", err @@ -418,11 +423,6 @@ func (b *Builder) Build() (string, error) { return "", err } - // 6. defer cleanup - defer func() { - b.cleanup() - }() - // 3. loop StageBuilders for building for _, stage := range b.stageBuilders { stageTimer := b.cliLog.StartTimer(fmt.Sprintf("Stage %d", stage.position)) -- GitLab