forked from ALHP/ALHP.GO
run housekeeping concurrent per repo
update splitpackages on parse
This commit is contained in:
19
main.go
19
main.go
@@ -24,6 +24,7 @@ import (
|
||||
"runtime"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
"syscall"
|
||||
"time"
|
||||
)
|
||||
@@ -228,12 +229,12 @@ func (b *BuildManager) parseWorker() {
|
||||
}
|
||||
|
||||
if skipping {
|
||||
dbPkg.Update().SetUpdated(time.Now()).SetVersion(pkg.Version).SetStatus(dbPkg.Status).SetSkipReason(dbPkg.SkipReason).SetHash(pkg.Hash).ExecX(context.Background())
|
||||
dbPkg.Update().SetUpdated(time.Now()).SetVersion(pkg.Version).SetPackages(packages2slice(pkg.Srcinfo.Packages)).SetStatus(dbPkg.Status).SetSkipReason(dbPkg.SkipReason).SetHash(pkg.Hash).ExecX(context.Background())
|
||||
b.repoPurge[pkg.FullRepo] <- pkg
|
||||
b.parseWG.Done()
|
||||
continue
|
||||
} else {
|
||||
dbPkg = dbPkg.Update().SetUpdated(time.Now()).SetVersion(pkg.Version).SaveX(context.Background())
|
||||
dbPkg = dbPkg.Update().SetUpdated(time.Now()).SetPackages(packages2slice(pkg.Srcinfo.Packages)).SetVersion(pkg.Version).SaveX(context.Background())
|
||||
}
|
||||
|
||||
repoVer, err := pkg.repoVersion()
|
||||
@@ -510,15 +511,23 @@ func (b *BuildManager) syncWorker() {
|
||||
}
|
||||
|
||||
// housekeeping
|
||||
err := housekeeping()
|
||||
wg := new(sync.WaitGroup)
|
||||
for _, repo := range repos {
|
||||
wg.Add(1)
|
||||
repo := repo
|
||||
go func() {
|
||||
err := housekeeping(repo, wg)
|
||||
if err != nil {
|
||||
log.Warningf("Housekeeping failed: %v", err)
|
||||
log.Warningf("[%s] Housekeeping failed: %v", repo, err)
|
||||
}
|
||||
}()
|
||||
}
|
||||
wg.Wait()
|
||||
|
||||
// fetch updates between sync runs
|
||||
b.alpmMutex.Lock()
|
||||
check(alpmHandle.Release())
|
||||
err = setupChroot()
|
||||
err := setupChroot()
|
||||
for err != nil {
|
||||
log.Warningf("Unable to upgrade chroot, trying again later.")
|
||||
time.Sleep(time.Minute)
|
||||
|
7
utils.go
7
utils.go
@@ -474,9 +474,9 @@ func (path PKGFile) isSignatureValid() (bool, error) {
|
||||
return false, nil
|
||||
}
|
||||
|
||||
func housekeeping() error {
|
||||
log.Debugf("Start housekeeping")
|
||||
for _, repo := range repos {
|
||||
func housekeeping(repo string, wg *sync.WaitGroup) error {
|
||||
defer wg.Done()
|
||||
log.Debugf("[%s] Start housekeeping", repo)
|
||||
packages, err := Glob(filepath.Join(conf.Basedir.Repo, repo, "/**/*.pkg.tar.zst"))
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -557,7 +557,6 @@ func housekeeping() error {
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user