Skip to content

Race condition when running the StdioServerTransportTests.SendMessageAsync_Should_Send_Message test #1

@eiriktsarpalis

Description

@eiriktsarpalis

There is a race between the StdioServerTransport.StartListeningAsync() and StdioServerTransport.SendMessageAsync calls since the former spins up a task that switches off the IsConnected flag before SendMessageAsync can finish sending a message. I can only reproduce this in CI.

[xUnit.net 00:00:07.02]     ModelContextProtocol.Tests.Transport.StdioServerTransportTests.SendMessageAsync_Should_Send_Message [FAIL]
  Failed ModelContextProtocol.Tests.Transport.StdioServerTransportTests.SendMessageAsync_Should_Send_Message [11 ms]
  Error Message:
   ModelContextProtocol.Protocol.Transport.McpTransportException : Transport is not connected
  Stack Trace:
     at ModelContextProtocol.Protocol.Transport.StdioServerTransport.SendMessageAsync(IJsonRpcMessage message, CancellationToken cancellationToken) in /home/runner/work/csharp-sdk/csharp-sdk/src/ModelContextProtocol/Protocol/Transport/StdioServerTransport.cs:line 109
   at ModelContextProtocol.Tests.Transport.StdioServerTransportTests.SendMessageAsync_Should_Send_Message() in /home/runner/work/csharp-sdk/csharp-sdk/tests/ModelContextProtocol.Tests/Transport/StdioServerTransportTests.cs:line 75
   at ModelContextProtocol.Tests.Transport.StdioServerTransportTests.SendMessageAsync_Should_Send_Message() in /home/runner/work/csharp-sdk/csharp-sdk/tests/ModelContextProtocol.Tests/Transport/StdioServerTransportTests.cs:line 80

Metadata

Metadata

Labels

testIssue related to tests

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions