garm/workers/provider/util.go
Gabriel Adrian Samfira 68183384dc Load entities in parallel
This change uses an error group to load different DB resources
in parallel.

Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
2025-05-08 22:26:40 +00:00

36 lines
696 B
Go

package provider
import (
"golang.org/x/sync/errgroup"
dbCommon "github.com/cloudbase/garm/database/common"
"github.com/cloudbase/garm/database/watcher"
)
func composeProviderWatcher() dbCommon.PayloadFilterFunc {
return watcher.WithAny(
watcher.WithEntityTypeFilter(dbCommon.InstanceEntityType),
watcher.WithEntityTypeFilter(dbCommon.ScaleSetEntityType),
)
}
func (p *Provider) waitForErrorGroupOrContextCancelled(g *errgroup.Group) error {
if g == nil {
return nil
}
done := make(chan error, 1)
go func() {
waitErr := g.Wait()
done <- waitErr
}()
select {
case err := <-done:
return err
case <-p.ctx.Done():
return p.ctx.Err()
case <-p.quit:
return nil
}
}