internal/pkg: correctly scrub substitute status
All checks were successful
Test / Create distribution (push) Successful in 1m6s
Test / Sandbox (push) Successful in 2m52s
Test / ShareFS (push) Successful in 3m44s
Test / Hakurei (push) Successful in 3m48s
Test / Sandbox (race detector) (push) Successful in 5m29s
Test / Hakurei (race detector) (push) Successful in 6m35s
Test / Flake checks (push) Successful in 1m14s
All checks were successful
Test / Create distribution (push) Successful in 1m6s
Test / Sandbox (push) Successful in 2m52s
Test / ShareFS (push) Successful in 3m44s
Test / Hakurei (push) Successful in 3m48s
Test / Sandbox (race detector) (push) Successful in 5m29s
Test / Hakurei (race detector) (push) Successful in 6m35s
Test / Flake checks (push) Successful in 1m14s
Scrubbing for status predates substitutes. This change fixes scrub handling of substitute status entries. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
@@ -1107,19 +1107,28 @@ func (c *Cache) Scrub(checks int) error {
|
||||
got := p.Get().(*Checksum)
|
||||
defer p.Put(got)
|
||||
|
||||
if _, err := os.Stat(c.base.Append(
|
||||
var ok bool
|
||||
for _, name := range [...]string{
|
||||
dirIdentifier,
|
||||
ent.Name(),
|
||||
).String()); err != nil {
|
||||
if !errors.Is(err, os.ErrNotExist) {
|
||||
addErr(dir.Append(ent.Name()), err)
|
||||
dirSubstitute,
|
||||
} {
|
||||
if _, err := os.Stat(c.base.Append(
|
||||
name,
|
||||
ent.Name(),
|
||||
).String()); err != nil {
|
||||
if !errors.Is(err, os.ErrNotExist) {
|
||||
addErr(dir.Append(ent.Name()), err)
|
||||
}
|
||||
continue
|
||||
}
|
||||
ok = true
|
||||
}
|
||||
if !ok {
|
||||
seMu.Lock()
|
||||
se.DanglingStatus = append(se.DanglingStatus, *want)
|
||||
seMu.Unlock()
|
||||
return false
|
||||
}
|
||||
return true
|
||||
return ok
|
||||
}}
|
||||
}
|
||||
wg.Wait()
|
||||
|
||||
Reference in New Issue
Block a user