-
-
Notifications
You must be signed in to change notification settings - Fork 521
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
timed out waiting for keepalive pong error never closes the connection #1527
Comments
It's possible that there's a bug but your report is a bit short of information for me to reproduce easily. Can you give me a bit more context?
|
I think the problem is in the keepalive ping internal procedure. It never raises ConnectionClosed when the client closes the connection.
hope I am more clear this time. |
Yes, that's more clear, thank you. The scenario that you're testing typically results in a stuck TCP connection because the TCP closing handshake cannot complete. websockets waits for the TCP connection to terminate to raise the ConnectionClosed exception because the details of that exception cannot be determined with certainty until then. My best guess is that you're seeing in the debug logs of the server:
This behavior is documented in Can you confirm that's what you're seeing? You need to go a bit further back in logs vs. what you provided. Once we agree on the facts, we can review whether that behavior makes sense. For context, it's the consequence of paying attention not to leak TCP connections. |
yes it was almost exactly like this. what I cannot recall right now is I thought I saw the log lines I sent was a "whole at once". until you pointed out there is a 5 mins gap. I wont be able to reproduce this right now. I will check again after the holiday. |
In my application I observe the same error on the client side, but only for Python 3.8, 3.9 and 3.10. This is a part of the used code:
After some time the wifi is switched off and the server is no longer reachable. Results with Python 3.10.15 on linux, websockets 14.1 Output:
Logging:
Results with Python 3.11.5 on linux, websockets 14.1 Output:
Logging:
With a close_timeout of 10 seconds I expect the "connection is CLOSED" message 10 seconds after "connection is CLOSING". Why does the CLOSE message only appear after 40 seconds? |
if client is connected to server, sending and receiving pings.
if you close the wifi or the connection of the client:
server never raises a connectionclosederror or a similar error. even though it seems it is gonna raise one.
until client reconnects again which is not expected.
if I enable to debug logs then it shows that connection is closed but no connection_closed raise.
The text was updated successfully, but these errors were encountered: