envoyproxy / envoyproxy/envoy

Add address or remove address to a multiple addresses listener without draining all the connections

Open
#23,431 6 comments 0 reactions 1 assignee Claimed by @soulxu View on GitHub
area/listener help wanted
Dominant language
C++
Stars
28.9k
Forks
5.6k
Avg merge
1d 20h
Merged PRs (30d)
437

Description

Currently, when adding a new address or removing an existing address from a multiple addresses listener, it will lead to a new listener generated, and draining the old listener, then all the existing connections will be drained.

There is a requirement from the istio side https://github.com/istio/istio/pull/41248. For headless service, Istio will create a listener for each endpoint original. Now with the multiple addresses listener, they can create a single listener for all the endpoints. But when the endpoints are changed, Istio needs to add or remove address to the multiple addresses listener and look for not draining all the existing connections which are on the unchanged address.

For adding address, it should be able done by enabling `ConnectionHandleImpl` to add `ActiveListener` for a new address to an existing listener.

For removing address, it should be able done by enabling `ConnectionHandleImpl` to stop and remove `ActiveListener` for a specific address on a listener. And ListenerManager will be able to drain an `ActiveListener` on a specific address instead of the whole listener.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.