Hi,
I'm trying to get some feedback on the following problem statements as well as a tentative proposal:
## The problem
As the number of object grows, the controllers may speed a lot of time doing its processing (during resync or when controller restarts). Often times, it is desired to process some of the items with higher priority:
* When controller restarts, all the ADD/Update events after likely should have a higher priority (assuming the existing ones are already handled before the restart).
* When a global resync happens, those items to be resynced don't have as high priority as those new events.
In resourcequota controller, its implementation started with two queues ([primary queue][1] and [priority queue][2]) just to address this unnecessary lag in some of the situations.
In knative/pkg, they have this as their first class citizen which is called [two lane queue][3].
I think this might be a common problem and would be great to start a conversation here on how may address this issue in client-go and give the community an "official" (sort of) version of solution.
## The proposal
I remember Tim was talking about managing k8s complexity during last kubecon, and I totally agree with it. Any new changes are high bar and need more eyes and considerations. I'm proposing
https://github.com/kubernetes/kubernetes/pull/123347 as the starting point for us to implement something similar to two lane queue and gather more data (or interest) out of k8s tree for people to try out and report back.
It is my first post in this group, let me know if I should add more information.