Skip to content

SurrealDB hosting tests unstable #794

@aaronpowell

Description

@aaronpowell

After merging #790 the new tests seem to be failing on the main branch - https://github.com/CommunityToolkit/Aspire/actions/runs/16868590705

The AddDatabaseCreatesDatabaseWithCustomScript failed with this exception in the logs:

[2025-08-11 01:30:19Z] fail: CommunityToolkit.Aspire.Testing.Resources.surreal[0]
      83: 2025-08-11T01:30:19.4022291Z Failed to create namespace 'ns1'
      Websocket.Client.Exceptions.WebsocketException: Failed to start Websocket client , error: 'Unable to connect to the remote server'
       ---> System.Net.WebSockets.WebSocketException (0x80004005): Unable to connect to the remote server
       ---> System.Net.Http.HttpRequestException: An error occurred while sending the request.
       ---> System.IO.IOException: Unable to read data from the transport connection: Connection reset by peer.
       ---> System.Net.Sockets.SocketException (104): Connection reset by peer
         --- End of inner exception stack trace ---
         at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
         at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource<System.Int32>.GetResult(Int16 token)
         at System.Net.Http.HttpConnection.InitialFillAsync(Boolean async)
         at System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
         --- End of inner exception stack trace ---
         at System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
         at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
         at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
         at System.Net.WebSockets.WebSocketHandle.ConnectAsync(Uri uri, HttpMessageInvoker invoker, CancellationToken cancellationToken, ClientWebSocketOptions options)
         at System.Net.WebSockets.WebSocketHandle.ConnectAsync(Uri uri, HttpMessageInvoker invoker, CancellationToken cancellationToken, ClientWebSocketOptions options)
         at System.Net.WebSockets.ClientWebSocket.ConnectAsyncCore(Uri uri, HttpMessageInvoker invoker, CancellationToken cancellationToken)
         at Websocket.Client.WebsocketClient.<>c__DisplayClass76_0.<<GetClientFactory>b__0>d.MoveNext()
      --- End of stack trace from previous location ---
         at Websocket.Client.WebsocketClient.StartClient(Uri uri, CancellationToken token, ReconnectionType type, Boolean failFast)
         --- End of inner exception stack trace ---
         at Websocket.Client.WebsocketClient.StartClient(Uri uri, CancellationToken token, ReconnectionType type, Boolean failFast)
         at Websocket.Client.WebsocketClient.StartInternal(Boolean failFast)
         at SurrealDb.Net.Internals.SurrealDbWsEngine.Connect(CancellationToken cancellationToken) in /_/SurrealDb.Net/Internals/SurrealDbEngine.Ws.cs:line 279
         at SurrealDb.Net.Internals.SurrealDbWsEngine.InternalConnectAsync(Boolean requireInitialized, CancellationToken cancellationToken) in /_/SurrealDb.Net/Internals/SurrealDbEngine.Ws.cs:line 1401
         at SurrealDb.Net.Internals.SurrealDbWsEngine.SendRequestAsync(String method, Object[] parameters, SurrealDbWsRequestPriority priority, CancellationToken cancellationToken) in /_/SurrealDb.Net/Internals/SurrealDbEngine.Ws.cs:line 1435
         at SurrealDb.Net.Internals.SurrealDbWsEngine.SendRequestAsync(String method, Object[] parameters, SurrealDbWsRequestPriority priority, CancellationToken cancellationToken) in /_/SurrealDb.Net/Internals/SurrealDbEngine.Ws.cs:line 1546
         at SurrealDb.Net.Internals.SurrealDbWsEngine.RawQuery(String query, IReadOnlyDictionary`2 parameters, CancellationToken cancellationToken) in /_/SurrealDb.Net/Internals/SurrealDbEngine.Ws.cs:line 798
         at Aspire.Hosting.SurrealDbBuilderExtensions.CreateNamespaceAsync(SurrealDbClient surrealClient, SurrealDbNamespaceResource namespaceResource, IServiceProvider serviceProvider, CancellationToken cancellationToken) in /home/runner/work/Aspire/Aspire/src/CommunityToolkit.Aspire.Hosting.SurrealDb/SurrealDbBuilderExtensions.cs:line 545

And it looks like ApiServiceStartsAndRespondsOk had this in the logs:

fail: CommunityToolkit.Aspire.Hosting.SurrealDb.AppHost.Resources.apiservice[0]
      10: 2025-08-11T01:30:49.4463710Z Failed to create resource apiservice
      System.TimeoutException: The operation has timed out.
         at SurrealDb.Net.Internals.SurrealDbWsEngine.SendRequestAsync(String method, Object[] parameters, SurrealDbWsRequestPriority priority, CancellationToken cancellationToken) in /_/SurrealDb.Net/Internals/SurrealDbEngine.Ws.cs:line 1535
         at SurrealDb.Net.Internals.SurrealDbWsEngine.SendRequestAsync(String method, Object[] parameters, SurrealDbWsRequestPriority priority, CancellationToken cancellationToken) in /_/SurrealDb.Net/Internals/SurrealDbEngine.Ws.cs:line 1546
         at SurrealDb.Net.Internals.SurrealDbWsEngine.SendRequestAsync(String method, Object[] parameters, SurrealDbWsRequestPriority priority, CancellationToken cancellationToken) in /_/SurrealDb.Net/Internals/SurrealDbEngine.Ws.cs:line 1546
         at SurrealDb.Net.Internals.SurrealDbWsEngine.SendRequestAsync(String method, Object[] parameters, SurrealDbWsRequestPriority priority, CancellationToken cancellationToken) in /_/SurrealDb.Net/Internals/SurrealDbEngine.Ws.cs:line 1546
         at SurrealDb.Net.Internals.SurrealDbWsEngine.Use(String ns, String db, SurrealDbWsRequestPriority priority, CancellationToken cancellationToken) in /_/SurrealDb.Net/Internals/SurrealDbEngine.Ws.cs:line 1286
         at Aspire.Hosting.SurrealDbBuilderExtensions.<>c__DisplayClass4_0.<<AddSurrealServer>b__1>d.MoveNext() in /home/runner/work/Aspire/Aspire/src/CommunityToolkit.Aspire.Hosting.SurrealDb/SurrealDbBuilderExtensions.cs:line 121
      --- End of stack trace from previous location ---
         at Aspire.Hosting.SurrealDbBuilderExtensions.<>c__DisplayClass4_0.<<AddSurrealServer>b__1>d.MoveNext() in /home/runner/work/Aspire/Aspire/src/CommunityToolkit.Aspire.Hosting.SurrealDb/SurrealDbBuilderExtensions.cs:line 112
      --- End of stack trace from previous location ---
         at Aspire.Hosting.Eventing.DistributedApplicationEventing.<>c__DisplayClass5_0`1.<<Subscribe>b__0>d.MoveNext() in /_/src/Aspire.Hosting/Eventing/DistributedApplicationEventing.cs:line 112
      --- End of stack trace from previous location ---
         at Aspire.Hosting.Eventing.DistributedApplicationEventing.<>c__DisplayClass4_0`1.<<Subscribe>b__0>d.MoveNext() in /_/src/Aspire.Hosting/Eventing/DistributedApplicationEventing.cs:line 82
      --- End of stack trace from previous location ---
         at Aspire.Hosting.Eventing.DistributedApplicationEventing.PublishAsync[T](T event, EventDispatchBehavior dispatchBehavior, CancellationToken cancellationToken) in /_/src/Aspire.Hosting/Eventing/DistributedApplicationEventing.cs:line 69
         at Aspire.Hosting.ApplicationModel.ResourceNotificationService.<>c__DisplayClass18_0.<<WaitUntilHealthyAsync>g__Core|1>d.MoveNext() in /_/src/Aspire.Hosting/ApplicationModel/ResourceNotificationService.cs:line 205
      --- End of stack trace from previous location ---
         at Aspire.Hosting.ApplicationModel.ResourceNotificationService.WaitUntilHealthyAsync(IResource resource, IResource dependency, WaitBehavior waitBehavior, CancellationToken cancellationToken) in /_/src/Aspire.Hosting/ApplicationModel/ResourceNotificationService.cs:line 158
         at Aspire.Hosting.ApplicationModel.ResourceNotificationService.WaitForDependenciesAsync(IResource resource, CancellationToken cancellationToken) in /_/src/Aspire.Hosting/ApplicationModel/ResourceNotificationService.cs:line 391
         at Aspire.Hosting.Orchestrator.ApplicationOrchestrator.WaitForInBeforeResourceStartedEvent(BeforeResourceStartedEvent event, CancellationToken cancellationToken) in /_/src/Aspire.Hosting/Orchestrator/ApplicationOrchestrator.cs:line 103
         at Aspire.Hosting.Eventing.DistributedApplicationEventing.<>c__DisplayClass4_0`1.<<Subscribe>b__0>d.MoveNext() in /_/src/Aspire.Hosting/Eventing/DistributedApplicationEventing.cs:line 82
      --- End of stack trace from previous location ---
         at Aspire.Hosting.Eventing.DistributedApplicationEventing.PublishAsync[T](T event, EventDispatchBehavior dispatchBehavior, CancellationToken cancellationToken) in /_/src/Aspire.Hosting/Eventing/DistributedApplicationEventing.cs:line 69
         at Aspire.Hosting.Orchestrator.ApplicationOrchestrator.OnResourceStarting(OnResourceStartingContext context) in /_/src/Aspire.Hosting/Orchestrator/ApplicationOrchestrator.cs:line 187
         at Aspire.Hosting.Dcp.DcpExecutorEvents.PublishAsync[T](T context) in /_/src/Aspire.Hosting/Dcp/DcpExecutorEvents.cs:line 33
         at Aspire.Hosting.Dcp.DcpExecutor.<>c__DisplayClass70_0.<<CreateExecutablesAsync>g__CreateResourceExecutablesAsyncCore|0>d.MoveNext() in /_/src/Aspire.Hosting/Dcp/DcpExecutor.cs:line 1049

This is found in the TRX file that can be downloaded from the CI job summary.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions