Skip to content

listener: in place filter chain update#10662

Merged
mattklein123 merged 33 commits intoenvoyproxy:masterfrom
lambdai:listenerutil
Apr 30, 2020
Merged

listener: in place filter chain update#10662
mattklein123 merged 33 commits intoenvoyproxy:masterfrom
lambdai:listenerutil

Conversation

@lambdai
Copy link
Copy Markdown
Contributor

@lambdai lambdai commented Apr 6, 2020

Commit Message:

Provide new listener update path which could update the filter chains without draining all the connections of the old listener.

The in place filter chain update flow is an optimization of listener update. If the supportUpdateFilterChain() passes and runtime
"envoy.reloadable_features.listener_in_place_filterchain_update" is not explicitly disabled,
the existing connections may not be drained if the owning filter chains are not updated in the new listener config.

Additional Description:

patch 3/N of #9773
Follow up of #10528

This PR is providing new listener update path guarded by supportUpdateFilterChain()
The in place filter chain update flow is an optimization of listener update. If the above check pass and runtime
"envoy.reloadable_features.listener_in_place_filterchain_update" is not explicitly disabled,
the existing connections may not be drained if the owning filter chains are not updated in the new listener config.

When the feature is disabled by the runtime, the following listener update won't use the optimized path.

The new update flow starts with the construction of ListenerImpl.
ListenerImpl will share PerListenerFactoryContext, and the warmup callback utilize the below worker interface

  1. addListener() with overridden listener
  2. removeFilterChains()
    Those 2 methods are landed in worker: provide removeFilterChain interface #10528

Risk Level: Medium
Connection life time changes by default. Can be disabled by setting "envoy.reloadable_features.listener_in_place_filterchain_update" to false.

Testing: integration test,unit test, runtime flag test.
Docs Changes:
Release Notes: see current.rst

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants