Skip to content

Small trace issue in SqlReceiver #3147

@Xiaohongt

Description

@Xiaohongt

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)”

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions