-
Notifications
You must be signed in to change notification settings - Fork 206
Stdio server transport is in a bad state #564
Copy link
Copy link
Labels
P1Significant bug affecting many usersSignificant bug affecting many usersapiPublic API changesPublic API changesbugSomething isn't workingSomething isn't workinginternal-usersRaised by internal usersRaised by internal usersready for workHas enough information to startHas enough information to start
Metadata
Metadata
Assignees
Labels
P1Significant bug affecting many usersSignificant bug affecting many usersapiPublic API changesPublic API changesbugSomething isn't workingSomething isn't workinginternal-usersRaised by internal usersRaised by internal usersready for workHas enough information to startHas enough information to start
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 #572If 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