forked from ALHP/ALHP.GO
fixed packages being removed while db was down; better error handling
This commit is contained in:
12
main.go
12
main.go
@@ -707,14 +707,10 @@ func (b *BuildManager) syncWorker() {
|
|||||||
),
|
),
|
||||||
).Only(context.Background())
|
).Only(context.Background())
|
||||||
|
|
||||||
if dbErr != nil {
|
if ent.IsNotFound(dbErr) {
|
||||||
switch dbErr.(type) {
|
log.Debugf("[%s/%s] Package not found in database", mPkgbuild.Repo(), mPkgbuild.PkgBase())
|
||||||
case *ent.NotFoundError:
|
} else if err != nil {
|
||||||
log.Debugf("[%s/%s] Package not found in database", mPkgbuild.Repo(), mPkgbuild.PkgBase())
|
log.Errorf("[%s/%s] Problem querying db for package: %v", mPkgbuild.Repo(), mPkgbuild.PkgBase(), dbErr)
|
||||||
break
|
|
||||||
default:
|
|
||||||
log.Errorf("[%s/%s] Problem querying db for package: %v", mPkgbuild.Repo(), mPkgbuild.PkgBase(), dbErr)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// compare b3sum of PKGBUILD file to hash in database, only proceed if hash differs
|
// compare b3sum of PKGBUILD file to hash in database, only proceed if hash differs
|
||||||
|
27
utils.go
27
utils.go
@@ -244,7 +244,7 @@ func (p *BuildPackage) setupBuildDir() (string, error) {
|
|||||||
|
|
||||||
err := cleanBuildDir(buildDir)
|
err := cleanBuildDir(buildDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("removing old builddir failed: %v", err)
|
return "", fmt.Errorf("removing old builddir failed: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = os.MkdirAll(buildDir, 0755)
|
err = os.MkdirAll(buildDir, 0755)
|
||||||
@@ -286,7 +286,7 @@ func (p *BuildPackage) increasePkgRel(buildNo int) error {
|
|||||||
if p.Srcinfo == nil {
|
if p.Srcinfo == nil {
|
||||||
err := p.genSrcinfo()
|
err := p.genSrcinfo()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error generating srcinfo: %v", err)
|
return fmt.Errorf("error generating srcinfo: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -699,7 +699,7 @@ func (p *BuildPackage) genSrcinfo() error {
|
|||||||
cmd := exec.Command("sh", "-c", "cd "+filepath.Dir(p.Pkgbuild)+"&&"+"makepkg --printsrcinfo -p "+filepath.Base(p.Pkgbuild))
|
cmd := exec.Command("sh", "-c", "cd "+filepath.Dir(p.Pkgbuild)+"&&"+"makepkg --printsrcinfo -p "+filepath.Base(p.Pkgbuild))
|
||||||
res, err := cmd.CombinedOutput()
|
res, err := cmd.CombinedOutput()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("makepkg exit non-zero (PKGBUILD: %s): %v (%s)", p.Pkgbuild, err, string(res))
|
return fmt.Errorf("makepkg exit non-zero (PKGBUILD: %s): %w (%s)", p.Pkgbuild, err, string(res))
|
||||||
}
|
}
|
||||||
|
|
||||||
info, err := srcinfo.Parse(string(res))
|
info, err := srcinfo.Parse(string(res))
|
||||||
@@ -718,7 +718,7 @@ func setupChroot() error {
|
|||||||
res, err := cmd.CombinedOutput()
|
res, err := cmd.CombinedOutput()
|
||||||
log.Debug(string(res))
|
log.Debug(string(res))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Unable to update chroot: %v\n%s", err, string(res))
|
return fmt.Errorf("Unable to update chroot: %w\n%s", err, string(res))
|
||||||
}
|
}
|
||||||
} else if os.IsNotExist(err) {
|
} else if os.IsNotExist(err) {
|
||||||
err := os.MkdirAll(filepath.Join(conf.Basedir.Work, chrootDir), 0755)
|
err := os.MkdirAll(filepath.Join(conf.Basedir.Work, chrootDir), 0755)
|
||||||
@@ -728,7 +728,7 @@ func setupChroot() error {
|
|||||||
res, err := cmd.CombinedOutput()
|
res, err := cmd.CombinedOutput()
|
||||||
log.Debug(string(res))
|
log.Debug(string(res))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Unable to create chroot: %v\n%s", err, string(res))
|
return fmt.Errorf("Unable to create chroot: %w\n%s", err, string(res))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return err
|
return err
|
||||||
@@ -749,14 +749,11 @@ func (path *Package) DBPackageIsolated(march string, repo dbpackage.Repository)
|
|||||||
sql.EQ(dbpackage.FieldRepository, repo)),
|
sql.EQ(dbpackage.FieldRepository, repo)),
|
||||||
)
|
)
|
||||||
}).Only(context.Background())
|
}).Only(context.Background())
|
||||||
if err != nil {
|
if ent.IsNotFound(err) {
|
||||||
switch err.(type) {
|
log.Debugf("Not found in database: %s", path.Name())
|
||||||
case *ent.NotFoundError:
|
return nil, err
|
||||||
log.Debugf("Not found in database: %s", path.Name())
|
} else if err != nil {
|
||||||
return nil, fmt.Errorf("package not found in DB: %s", path.Name())
|
return nil, err
|
||||||
default:
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return dbPkg, nil
|
return dbPkg, nil
|
||||||
}
|
}
|
||||||
@@ -788,7 +785,7 @@ func housekeeping(repo string, wg *sync.WaitGroup) error {
|
|||||||
mPackage := Package(path)
|
mPackage := Package(path)
|
||||||
|
|
||||||
dbPkg, err := mPackage.DBPackage()
|
dbPkg, err := mPackage.DBPackage()
|
||||||
if err != nil {
|
if ent.IsNotFound(err) {
|
||||||
log.Infof("[HK/%s] removing orphan %s", repo, filepath.Base(path))
|
log.Infof("[HK/%s] removing orphan %s", repo, filepath.Base(path))
|
||||||
pkg := &BuildPackage{
|
pkg := &BuildPackage{
|
||||||
FullRepo: mPackage.FullRepo(),
|
FullRepo: mPackage.FullRepo(),
|
||||||
@@ -797,6 +794,8 @@ func housekeeping(repo string, wg *sync.WaitGroup) error {
|
|||||||
}
|
}
|
||||||
buildManager.repoPurge[pkg.FullRepo] <- []*BuildPackage{pkg}
|
buildManager.repoPurge[pkg.FullRepo] <- []*BuildPackage{pkg}
|
||||||
continue
|
continue
|
||||||
|
} else if err != nil {
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
pkg := &BuildPackage{
|
pkg := &BuildPackage{
|
||||||
|
Reference in New Issue
Block a user