Uninstalled Event Source results in "Failed to list *v1.Source: the server could not find the requested resource"
Describe the bug If we create a new Event Source, ie. we install Redis Stream Sources, the parent controller successfully creates a new dynamic controller for this particular Source. But if we uninstall this Source, the created dynamic controller is not properly destroyed. This results in error messages in the log:
E1130 20:07:23.537960 1 reflector.go:383] k8s.io/[email protected]+incompatible/tools/cache/reflector.go:125: Failed to watch *v1.Source: the server could not find the requested resource
E1130 20:07:24.782159 1 reflector.go:178] k8s.io/[email protected]+incompatible/tools/cache/reflector.go:125: Failed to list *v1.Source: the server could not find the requested resource
E1130 20:07:27.383944 1 reflector.go:178] k8s.io/[email protected]+incompatible/tools/cache/reflector.go:125: Failed to list *v1.Source: the server could not find the requested resource
This code to delete controller is never called: https://github.com/knative/eventing/blob/f4482c580e10dba9711b88e27ccde8b858831756/pkg/reconciler/source/crd/crd.go#L69-L76
Expected behavior Error line below isn't repeated over and over and the appropriate controllers are deleted.
To Reproduce Install knative-eventing
k apply --filename https://github.com/knative/eventing/releases/download/v0.19.0/eventing-crds.yaml
k apply --filename https://github.com/knative/eventing/releases/download/v0.19.0/eventing-core.yaml
Install any eventing source For example, RedisStream
ko apply -f source/config
Delete the eventing source
For example, RedisStream
ko delete -f source/config
Knative release version 0.19.0
Additional context Same problem also in eventing-autoscaler-keda (same code) https://github.com/knative-sandbox/eventing-autoscaler-keda/issues/2
I think the problem is that with genReconciler the ReconcileKind never gets called with deleted resources. You probably need to manually add a handler, kind of like we do in IMC here so that you can call the cleanup: https://github.com/knative/eventing/blob/master/pkg/reconciler/inmemorychannel/dispatcher/controller.go#L130
@vaikas thanks for taking a look at this issue. I did attempt to implement the solution you suggested (similar to IMC) in the other sibling issue for this ... in eventing-autoscaler-keda: https://github.com/knative-sandbox/eventing-autoscaler-keda/pull/54/files#diff-9f218382398a14e88cf9424a19a54422d028e7df5a80e6d107b8d33052897859R64-R68 and unfortunately, the deleteFunc in CRD pkg doesn't get called and instead the specific SOURCE's eventhandler delete function gets called that doesn't have information of all the dynamic controllers created. So it doesn't help. This also happens here in eventing code. I tried it out for eventing this evening. So I'm blocked with both issues here until I can come up with another solution. Will appreciate any advice you have for me...
This issue is stale because it has been open for 90 days with no
activity. It will automatically close after 30 more days of
inactivity. Reopen the issue with /reopen. Mark the issue as
fresh by adding the comment /remove-lifecycle stale.
/reopen
@aavarghese: Reopened this issue.
In response to this:
/reopen
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.
This issue is stale because it has been open for 90 days with no
activity. It will automatically close after 30 more days of
inactivity. Reopen the issue with /reopen. Mark the issue as
fresh by adding the comment /remove-lifecycle stale.
/reopen /remove-lifecycle stale
@lionelvillard: Reopened this issue.
In response to this:
/reopen /remove-lifecycle stale
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.
This issue is stale because it has been open for 90 days with no
activity. It will automatically close after 30 more days of
inactivity. Reopen the issue with /reopen. Mark the issue as
fresh by adding the comment /remove-lifecycle stale.
/reopen /remove-lifecycle stale /triage accepted
@pierDipi: Reopened this issue.
In response to this:
/reopen /remove-lifecycle stale /triage accepted
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.