In one of stress test AbortOrStop for WebSocketTransport run results, it catch below exception, looks like when call Connection.Stop() race condition causes reconnect and ArgumentNullException, I will provide client trace when repro again.
ArgumentNullException:
System.ArgumentNullException: Value cannot be null.
Parameter name: stringToEscape
at System.Uri.EscapeDataString(String stringToEscape)
at Microsoft.AspNet.SignalR.Client.Infrastructure.UrlBuilder.AppendMessageId(StringBuilder urlStringBuilder, IConnection connection) in d:\dd\SignalR_Dev_Stress\SignalR\src\Microsoft.AspNet.SignalR.Client\Infrastructure\UrlBuilder.cs:line 203
at Microsoft.AspNet.SignalR.Client.Infrastructure.UrlBuilder.AppendReceiveParameters(StringBuilder urlStringBuilder, IConnection connection) in d:\dd\SignalR_Dev_Stress\SignalR\src\Microsoft.AspNet.SignalR.Client\Infrastructure\UrlBuilder.cs:line 153
at Microsoft.AspNet.SignalR.Client.Infrastructure.UrlBuilder.BuildReconnect(IConnection connection, String transport, String connectionData) in d:\dd\SignalR_Dev_Stress\SignalR\src\Microsoft.AspNet.SignalR.Client\Infrastructure\UrlBuilder.cs:line 73
at Microsoft.AspNet.SignalR.Client.Transports.WebSocketTransport.<DoReconnect>d__8.MoveNext() in d:\dd\SignalR_Dev_Stress\SignalR\src\Microsoft.AspNet.SignalR.Client45\Transports\WebSocketTransport.cs:line 176
Here is source code of AppendMessageId method:
private static void AppendMessageId(StringBuilder urlStringBuilder, IConnection connection)
{
if (connection.MessageId != null)
{
urlStringBuilder
.Append("messageId=")
.Append(Uri.EscapeDataString(connection.MessageId))
.Append("&");
}
}
Note:
Potentially AppendGroupsToken method should have same race issue when call Connection.Stop() , because in call stack AppendReceiveParameters method also call AppendGroupsToken and in Disconnect method GroupsToken also set to null as well as MessageId set to null.
Source code of AppendGroupsToken method:
private static void AppendGroupsToken(StringBuilder urlStringBuilder, IConnection connection)
{
if (connection.GroupsToken != null)
{
urlStringBuilder
.Append("groupsToken=")
.Append(Uri.EscapeDataString(connection.GroupsToken))
.Append("&");
}
}
Source code of AppendReceiveParameters method:
private static void AppendReceiveParameters(StringBuilder urlStringBuilder, IConnection connection)
{
AppendMessageId(urlStringBuilder, connection);
AppendGroupsToken(urlStringBuilder, connection);
#if PORTABLE
AppendNoCacheUrlParam(urlStringBuilder);
#endif
}
In one of stress test AbortOrStop for WebSocketTransport run results, it catch below exception, looks like when call Connection.Stop() race condition causes reconnect and ArgumentNullException, I will provide client trace when repro again.
Here is source code of AppendMessageId method:
Note:
Potentially AppendGroupsToken method should have same race issue when call Connection.Stop() , because in call stack AppendReceiveParameters method also call AppendGroupsToken and in Disconnect method GroupsToken also set to null as well as MessageId set to null.
Source code of AppendGroupsToken method:
Source code of AppendReceiveParameters method: