-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Backport 1.19] Enable Windows workers (#17555) #17813
Conversation
Fixing an issue where Envoy workers are not picking up connections on Windows. The root cause of the issue is in the Windows kernel. There are two issues that we need to consider: If we want to listen from a duplicated socket then we need to duplicate it after we call listen on the original socket. If duplicated sockets try to accept at the same time, then one of the accept calls might block. Even if the sockets are non-blocking. The best way to work around that issue is to only listen/accept connections from the first worker thread and then use ExactConnectionBalance to dispatch the connection to another worker thread. This is a temporary solution until the underlying issue is fixed on Windows. Signed-off-by: Sotiris Nanopoulos <sonanopo@microsoft.com>
… setting resuse_port on linux Signed-off-by: Sotiris Nanopoulos <sonanopo@microsoft.com>
8aa507d
to
c62ded2
Compare
cc @wrowe who is doing the release and @ggreenway / @mattklein123 who did the initial review cc @envoyproxy/windows-dev |
/retest |
Retrying Azure Pipelines: |
Signed-off-by: Sotiris Nanopoulos <sonanopo@microsoft.com>
/retest |
Retrying Azure Pipelines: |
Signed-off-by: Sotiris Nanopoulos <sonanopo@microsoft.com>
please wait merge until #17867 lands and then main merge |
/wait |
Signed-off-by: Sotiris Nanopoulos <sonanopo@microsoft.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, it would be nice to have several working examples to compare between 1.18/1.19/main evolution of the rest of the code. TYVM for the backport submission.
Commit Message:
Backport 1260c5c to 1.19
Fixing an issue where Envoy workers are not picking up connections on Windows.
The root cause of the issue is in the Windows kernel.
There are two issues that we need to consider:
If we want to listen from a duplicated socket then we need to duplicate it after we call listen on the original socket.
If duplicated sockets try to accept at the same time, then one of the accept calls might block. Even if the sockets are non-blocking.
The best way to work around that issue is to only listen/accept connections from the first worker thread and then use ExactConnectionBalance to dispatch the connection to another worker thread. This is a temporary solution until the underlying issue is fixed on Windows.
Signed-off-by: Sotiris Nanopoulos sonanopo@microsoft.com
Risk Level: Low
Testing: Manual testing and tests
Docs Changes: Added
Release Notes: Added a bug fix note
Platform Specific Features: N/A