You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When RPC is processed over socket connection, that may result in socket disconnection, even if no timeouts reached, because client receiving no "pong" response for his "ping" request, probably because RPC processing is blocking it.
If run long enough RPC call with low client keep alive timeout, this issue is almost stable, but for many cases it's just often firing, not absolutely stable.
Steps to Reproduce
Example:
Make socket connection
Run long processing RPC
Expected Result
RPC processing failed, cause socket has been closed
Actual Result
RPC processing succeed
Your Environment
Nakama: 3.12.0
Database: PostgreSQL from Docker image postgres:13.6-alpine
Environment name and version: Docker image heroiclabs/nakama:3.12.0
It's waiting for rpc to be processed in order to call "ReadMessage", and "ping" is probably handled there. If parallel rpc processing from socket is not wanted, maybe we can make a separate message queue in order to handle system frames before they expire.
The text was updated successfully, but these errors were encountered:
Description
When RPC is processed over socket connection, that may result in socket disconnection, even if no timeouts reached, because client receiving no "pong" response for his "ping" request, probably because RPC processing is blocking it.
If run long enough RPC call with low client keep alive timeout, this issue is almost stable, but for many cases it's just often firing, not absolutely stable.
Steps to Reproduce
Example:
Expected Result
RPC processing failed, cause socket has been closed
Actual Result
RPC processing succeed
Your Environment
Note
My guess is that problem is in this loop structure:
https://github.com/heroiclabs/nakama/blob/master/server/session_ws.go#L196
It's waiting for rpc to be processed in order to call "ReadMessage", and "ping" is probably handled there. If parallel rpc processing from socket is not wanted, maybe we can make a separate message queue in order to handle system frames before they expire.
The text was updated successfully, but these errors were encountered: