lidar: check parent resource type

If you had a resource with "check_every: never" who's parent was a
custom resource type, the parent resource type would never be checked.
Checks created by other components in Concourse (the api) would fail
because the DB would find no versions for the parent resource type.

This commit ensures we still try and check the parent resource type.

Signed-off-by: Taylor Silva <tsilva@pivotal.io>
This commit is contained in:
Taylor Silva 2021-02-25 16:46:19 -05:00
parent 81c39e21d4
commit 14ff4ba8b4
2 changed files with 13 additions and 6 deletions

View File

@ -58,10 +58,6 @@ func (s *scanner) Run(ctx context.Context) error {
}()
defer waitGroup.Done()
if resource.CheckEvery() != nil && resource.CheckEvery().Never {
return
}
s.check(spanCtx, resource, resourceTypes, resourceTypesChecked)
}(resource, resourceTypes)
}
@ -93,6 +89,10 @@ func (s *scanner) check(ctx context.Context, checkable db.Checkable, resourceTyp
version := checkable.CurrentPinnedVersion()
if checkable.CheckEvery() != nil && checkable.CheckEvery().Never {
return
}
_, created, err := s.checkFactory.TryCreateCheck(lagerctx.NewContext(spanCtx, logger), checkable, resourceTypes, version, false)
if err != nil {
logger.Error("failed-to-create-check", err)

View File

@ -72,10 +72,17 @@ var _ = Describe("Scanner", func() {
Context("when CheckEvery is never", func() {
BeforeEach(func() {
fakeResource.CheckEveryReturns(&atc.CheckEvery{Never: true})
fakeResource.TypeReturns("parent")
fakeResource.PipelineIDReturns(1)
fakeResourceType := new(dbfakes.FakeResourceType)
fakeResourceType.NameReturns("parent")
fakeResourceType.PipelineIDReturns(1)
fakeCheckFactory.ResourceTypesReturns([]db.ResourceType{fakeResourceType}, nil)
})
It("does not check", func() {
Expect(fakeCheckFactory.TryCreateCheckCallCount()).To(Equal(0))
It("does not check the resource but still checks the parent", func() {
Expect(fakeCheckFactory.TryCreateCheckCallCount()).To(Equal(1))
})
})