• Aaron U'Ren's avatar
    Fix Memory Consumption in network_policy_controller (#902) · 837554bf
    Aaron U'Ren authored
    * feat(gitignore): don't track intellij files
    
    * fact(network_policy): networkPoliciesInfo -> stack
    
    Take networkPoliciesInfo off of the npc struct and convert it to a stack
    variable that is easy to cleanup.
    
    * fix(network_policy): k8s obj memory accumulation
    
    Kubernetes informers will block on handler execution and will then begin
    to accumulate cached Kubernetes object information into the heap. This
    change moves the full sync logic into it's own goroutine where full
    syncs are triggered and gated via writing to a single item channel.
    
    This ensures that:
    - Syncs will only happen one at a time (as they are full syncs and we
      can't process multiple at once)
    - Sync requests are only ever delayed and never lost as they will be
      added to the request channel
    - After we make a sync request we return fast to ensure that the handler
      execution returns fast and that we don't block the Kubernetes
      informers
    
    * fact(network_policy): rework readyForUpdates
    
    Now that we are better managing requests for full syncs we no longer
    need to manage readyForUpdates on the npc controller. We already enforce
    not blocking the handlers and a single sync execution chain, whether it
    comes from the controller in the form of a periodic sync or whether it
    comes from a Kubernetes informer, either way the result is a
    non-blocking, single thread of execution, full sync.
    
    * fix(network_policy): address PR feedback
    837554bf
.gitignore 195 Bytes