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
Errors such as "frame too large" and "PROTOCOL_ERROR" occurred with Unix domain socket on Windows #7039
Comments
Unfortunately we don't have the hardware needed to debug this. If someone else can help, we can review and merge PRs. Thanks! |
The issue is reproducible on other machines as well, and it occurs consistently across different versions like go1.21 and go1.22. Additionally, it persists on Windows 11 and Windows 2022. Debugging based on the log, an error occurs in the following code:
or
|
What version of gRPC are you using?
v1.62.1
What version of Go are you using (
go version
)?go version go1.19.13 windows/amd64
What operating system (Linux, Windows, …) and version?
Windows 10 Enterprise 22H2 19045.4046
Windows 11 Pro 23H2 22631.3155
What did you do?
I initially observed these errors in Unix domain socket connection between daprd and its pluggable component. After modifying the RouteChat code in grpc-go/examples/route_guide, I was able to reproduce them.
What I did
The changes to server.go and client.go can be found at this repository.
Use Unix domain socket
Include a dummy string in the Message for sizing purposes
Continuously send requests without concurrency and log status
Respond to received requests as they are
How to reproduce
Install go and set up environment variables
And if 'GODEBUG: http2debug=2' is present, delete it. When printing this debug log, no errors were observed to occur.
Clone the repositories and compile for Unix domain socket
Execute 'server.exe' and 'client.exe' in separate command windows.
Be prepared to wait for errors; they may occur after several minutes or even tens of minutes.
What did you expect to see?
Continue running as if using a TCP socket connection.
When using TCP connection, there are no code differences besides the address specified in 'server.go' and 'client.go'. They can be found at this repository.
What did you see instead?
Try 1
Error occurred within 15 seconds.
server.exe logs
client.exe logs
Try 2
Error occurred within 1 seconds.
server.exe logs
client.exe logs
Try 3
Error occurred within 1 minute and 16 seconds.
server.exe logs
client.exe logs
Try 4 - seconds later
Error occurred within 2 minutes and 27 seconds.
server.exe logs
client.exe logs
Try 5
Error occurred within 2 minutes and 3 seconds.
server.exe logs
client.exe logs
The text was updated successfully, but these errors were encountered: