-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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.18] Enable Windows workers (#17555) #17814
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 <[email protected]>
Signed-off-by: Sotiris Nanopoulos <[email protected]>
389949b
to
bab6c80
Compare
Signed-off-by: Sotiris Nanopoulos <[email protected]>
/retest |
Retrying Azure Pipelines: |
Signed-off-by: Sotiris Nanopoulos <[email protected]>
cc @wrowe |
This lgtm, but with a fat warning that I don't know much about Windows idiosyncrasies. |
/retest |
Retrying Azure Pipelines: |
Need to merge main here, I believe compile_time_options phase is fixed on main. |
#17868 needs to land beforehand. |
@mathetake was correct, need to merge to branch one more time here @davinci26 and I think it will pass CI to be merged. |
Signed-off-by: Sotiris Nanopoulos <[email protected]>
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.18
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 [email protected]
Risk Level: Low
Testing: Manual testing and tests
Docs Changes: Added
Release Notes: Added a bug fix note
Platform Specific Features: N/A