-
Notifications
You must be signed in to change notification settings - Fork 27
Description
Describe the bug
After updating WatsonTCP to revision 9c27fc97fb4195f21ef2044f53ada9f3323731e0, part of the RPC began to hang with infinite SendTimeout and frequent RPCs. If I replace the channel with WebSocketClientChannel, then no RPC hangs.
Send waits on server side in WatsonTcpServer.cs at
await client.WriteLock.WaitAsync(token).ConfigureAwait(false);
It's a deadlock. This seems to happen when processing RPC with intensive delegate calls, which leads to frequent sending of data from the server. As a result, many tasks are hanging on wait, but they do not continue due to thread pool exhaustion.
Expected behavior
RPCs don't hang.
Additional notes
WatsonTCP creates a lot of problems, and is also not actively supported by the developer. Maybe we should leave WebSocketClientChannel as the main one? And maybe you should abandon WatsonTCP?