followup fixes for new weighted build-queue
This commit is contained in:
parent
ba159e0a72
commit
270889bf5c
11
main.go
11
main.go
|
@ -390,6 +390,15 @@ func (b *BuildManager) syncWorker(ctx context.Context) error {
|
||||||
var slowQueue []*ProtoPackage
|
var slowQueue []*ProtoPackage
|
||||||
|
|
||||||
for _, pkg := range queue {
|
for _, pkg := range queue {
|
||||||
|
eligible, err := pkg.isEligible(ctx)
|
||||||
|
if err != nil {
|
||||||
|
log.Warningf("Unable to determine package status for package %s: %v", pkg.Pkgbase, err)
|
||||||
|
}
|
||||||
|
if !eligible {
|
||||||
|
log.Debugf("skipped package %s (%v)", pkg.Pkgbase, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
if pkg.Priority() >= float64(conf.Build.SlowQueueThreshold) {
|
if pkg.Priority() >= float64(conf.Build.SlowQueueThreshold) {
|
||||||
slowQueue = append(slowQueue, pkg)
|
slowQueue = append(slowQueue, pkg)
|
||||||
} else {
|
} else {
|
||||||
|
@ -397,7 +406,7 @@ func (b *BuildManager) syncWorker(ctx context.Context) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(fastQueue) == 0 {
|
if len(fastQueue) > 0 && len(slowQueue) > 0 {
|
||||||
log.Infof("Skipping slowQueue=%d in favor of fastQueue=%d", len(slowQueue), len(fastQueue))
|
log.Infof("Skipping slowQueue=%d in favor of fastQueue=%d", len(slowQueue), len(fastQueue))
|
||||||
slowQueue = []*ProtoPackage{}
|
slowQueue = []*ProtoPackage{}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ type ProtoPackage struct {
|
||||||
DbPackage *ent.DbPackage
|
DbPackage *ent.DbPackage
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p ProtoPackage) isEligible(ctx context.Context) (bool, error) {
|
func (p *ProtoPackage) isEligible(ctx context.Context) (bool, error) {
|
||||||
if err := p.genSrcinfo(); err != nil {
|
if err := p.genSrcinfo(); err != nil {
|
||||||
return false, fmt.Errorf("error generating SRCINFO: %w", err)
|
return false, fmt.Errorf("error generating SRCINFO: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,7 @@ func (p ProtoPackage) isEligible(ctx context.Context) (bool, error) {
|
||||||
p.DbPackage = p.DbPackage.Update().SetUpdated(time.Now()).SetVersion(p.Version).
|
p.DbPackage = p.DbPackage.Update().SetUpdated(time.Now()).SetVersion(p.Version).
|
||||||
SetPackages(packages2slice(p.Srcinfo.Packages)).SetStatus(p.DbPackage.Status).
|
SetPackages(packages2slice(p.Srcinfo.Packages)).SetStatus(p.DbPackage.Status).
|
||||||
SetSkipReason(p.DbPackage.SkipReason).SetHash(p.Hash).SaveX(ctx)
|
SetSkipReason(p.DbPackage.SkipReason).SetHash(p.Hash).SaveX(ctx)
|
||||||
return false, nil
|
return false, fmt.Errorf("skipped package: %s", p.DbPackage.SkipReason)
|
||||||
} else {
|
} else {
|
||||||
p.DbPackage = p.DbPackage.Update().SetUpdated(time.Now()).SetPackages(packages2slice(p.Srcinfo.Packages)).SetVersion(p.Version).SaveX(ctx)
|
p.DbPackage = p.DbPackage.Update().SetUpdated(time.Now()).SetPackages(packages2slice(p.Srcinfo.Packages)).SetVersion(p.Version).SaveX(ctx)
|
||||||
}
|
}
|
||||||
|
@ -300,11 +300,15 @@ func (p *ProtoPackage) build(ctx context.Context) (time.Duration, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *ProtoPackage) Priority() float64 {
|
func (p *ProtoPackage) Priority() float64 {
|
||||||
|
if p.DbPackage == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
if p.DbPackage.BuildTimeEnd.IsZero() {
|
if p.DbPackage.BuildTimeEnd.IsZero() {
|
||||||
return 0
|
return 0
|
||||||
} else {
|
} else {
|
||||||
time := p.DbPackage.BuildTimeEnd.Sub(p.DbPackage.BuildTimeStart)
|
nTime := p.DbPackage.BuildTimeEnd.Sub(p.DbPackage.BuildTimeStart)
|
||||||
return time.Minutes()
|
return nTime.Minutes()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
SAVE_PATH = "/path/to/workdir"
|
||||||
|
|
||||||
|
try:
|
||||||
|
chroot_abs = Path(sys.argv[1]).resolve(True)
|
||||||
|
except:
|
||||||
|
print("path does not resolve")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
if str(chroot_abs).startswith(SAVE_PATH):
|
||||||
|
os.system("rm -rf " + str(chroot_abs))
|
||||||
|
else:
|
||||||
|
sys.exit(2)
|
3
utils.go
3
utils.go
|
@ -168,7 +168,8 @@ func cleanBuildDir(dir string, chrootDir string) error {
|
||||||
|
|
||||||
if chrootDir != "" {
|
if chrootDir != "" {
|
||||||
if stat, err := os.Stat(chrootDir); err == nil && stat.IsDir() {
|
if stat, err := os.Stat(chrootDir); err == nil && stat.IsDir() {
|
||||||
err = os.RemoveAll(chrootDir)
|
rmCmd := exec.Command("rm_chroot.py", chrootDir)
|
||||||
|
_, err := rmCmd.CombinedOutput()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue