Merge pull request #2078 from crazy-max/fix-rm-state-group

build: fix racy localstate group removal
This commit is contained in:
Tõnis Tiigi 2023-10-18 16:54:21 -07:00 committed by GitHub
commit 7d2c9d5ef5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -127,22 +127,17 @@ func (ls *LocalState) RemoveBuilder(builderName string) error {
if err != nil { if err != nil {
return err return err
} }
eg, _ := errgroup.WithContext(context.TODO())
for _, fi := range fis { for _, fi := range fis {
func(fi os.DirEntry) { if err := ls.RemoveBuilderNode(builderName, fi.Name()); err != nil {
eg.Go(func() error { return err
return ls.RemoveBuilderNode(builderName, fi.Name()) }
})
}(fi)
}
if err := eg.Wait(); err != nil {
return err
} }
return os.RemoveAll(dir) return os.RemoveAll(dir)
} }
// RemoveBuilderNode removes all refs for a builder node.
// This func is not safe for concurrent use from multiple goroutines.
func (ls *LocalState) RemoveBuilderNode(builderName string, nodeName string) error { func (ls *LocalState) RemoveBuilderNode(builderName string, nodeName string) error {
if builderName == "" { if builderName == "" {
return errors.Errorf("builder name empty") return errors.Errorf("builder name empty")