We have below small trace issues in SqlReceiver:
1). In https://github.com/SignalR/SignalR/blob/dev/src/Microsoft.AspNet.SignalR.SqlServer/SqlReceiver.cs#L122, Trace.TraceInformation doesn't use SignalR.SqlMessageBus TraceSource.
Functional impact:
We can't see the trace information from that trace in the SignalR.SqlMessageBus trace listener, e.g. the trace log file for SignalR.SqlMessageBus trace.
2). Overlapped tracing message for unexpected message Id in SqlReceiver.ProcessRecord:
In https://github.com/SignalR/SignalR/blob/dev/src/Microsoft.AspNet.SignalR.SqlServer/SqlReceiver.cs#L137 condition for trace is overlapped from next trace condition.
In the source code:
private void ProcessRecord(IDataRecord record, DbOperation dbOperation)
{
var id = record.GetInt64(0);
ScaleoutMessage message = SqlPayload.FromBytes(record);
if (id != _lastPayloadId + 1)
{
_trace.TraceError("{0}Missed message(s) from SQL Server. Expected payload ID {1} but got {2}.", _tracePrefix, _lastPayloadId + 1, id);
}
if (id <= _lastPayloadId)
{
_trace.TraceInformation("{0}Duplicate message(s) or payload ID reset from SQL Server. Last payload ID {1}, this payload ID {2}", _tracePrefix, _lastPayloadId, id);
}
. . . . . .
}
Functional impact:
When message id <= _lastPayloadId, we can see overlapped trace message for unexpected message Id in log file:
. . . Missed message(s) from SQL Server. Expected payload ID . . . . . .
. . . Duplicate message(s) or payload ID reset from SQL Server. Last payload ID . . . . . .
But actually in this case it is only about "Duplicate message..."
So probably we can update the condition “if (id != _lastPayloadId + 1)” to condition “if (id > _lastPayloadId + 1)”
We have below small trace issues in SqlReceiver:
1). In https://github.com/SignalR/SignalR/blob/dev/src/Microsoft.AspNet.SignalR.SqlServer/SqlReceiver.cs#L122, Trace.TraceInformation doesn't use SignalR.SqlMessageBus TraceSource.
Functional impact:
We can't see the trace information from that trace in the SignalR.SqlMessageBus trace listener, e.g. the trace log file for SignalR.SqlMessageBus trace.
2). Overlapped tracing message for unexpected message Id in SqlReceiver.ProcessRecord:
In https://github.com/SignalR/SignalR/blob/dev/src/Microsoft.AspNet.SignalR.SqlServer/SqlReceiver.cs#L137 condition for trace is overlapped from next trace condition.
In the source code:
Functional impact:
When message id <= _lastPayloadId, we can see overlapped trace message for unexpected message Id in log file:
. . . Missed message(s) from SQL Server. Expected payload ID . . . . . .
. . . Duplicate message(s) or payload ID reset from SQL Server. Last payload ID . . . . . .
But actually in this case it is only about "Duplicate message..."
So probably we can update the condition “if (id != _lastPayloadId + 1)” to condition “if (id > _lastPayloadId + 1)”