-
Notifications
You must be signed in to change notification settings - Fork 202
Description
Describe the bug
Stdio transport is the most convenient option in a distributed application, since you can pass a custom sink/source to it. However, the current implementation has a bunch of critical bugs:
-
Client messages are processed sequentially. This means there can't be 2 requests being processed at once.Moved to StdioServer: messages should be processed concurrently #572
If there's a pinger to check client liveness, the "pong" response from client won't be handled before the previous, maybe very long-running, request handler is finished.
Also it blocks advanced protocol features like elicitation. -
Request handlers are launched on Dispatchers.IO
-
The coroutine scope that's used in this transport is completely detached from the coroutine tree, which may cause leaks. Please add an optional CoroutineScope parameter
-
Cancellation exceptions are being caught and not rethrown