Skip to content

RPC freezes when intensively calling delegates with WatsonTCP #179

@sancheolz

Description

@sancheolz

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions