Simple walk through first on what I’m trying to accomplish.
I’ve set up a NServiceBus endpoint that calls a WCF service that sits on another server. We’ve purposly broke the reference to the service to help our support team walk through replaying messages through ServicePulse. The expected outcome is that all 12 messages will fail FLR after 3 attempts and they will end up in ServicePulse for our team to replay.
What is happening is different. With several attempts at doing so we are seeing anyware from 0 messages showing up in ServicePulse, to 3 or 4. Missing the remaining to make 12. I’ve verified connectivity and that ServiceControl is working as expected.
In troubleshooting this issue i’ve signed into our server for ServiceControl/Pulse and noticed something in the event logs. For each message that didn’t show up in ServicePulse, there is an Error event (source ServiceControl) in the event logs. Each one states:
A message import has failed. A log file has been written to C:\ProgramData\Particular\ServiceControl\Particular.ServiceControl\Logs\FailedImports\Error\REPLACEFILENAMEHERE.txt
When i open the corrisponding log file here is what they state:
Exception:
The RegEx engine has timed out while trying to match a pattern to an input string. This can occur for many reasons, including very large inputs or excessive backtracking caused by nested quantifiers, back-references and other factors.
StackTrace:
at System.Text.RegularExpressions.RegexRunner.DoCheckTimeout()
at Go91(RegexRunner )
at System.Text.RegularExpressions.RegexRunner.Scan(Regex regex, String text, Int32 textbeg, Int32 textend, Int32 textstart, Int32 prevlen, Boolean quick, TimeSpan timeout)
at System.Text.RegularExpressions.Regex.Run(Boolean quick, Int32 prevlen, String input, Int32 beginning, Int32 length, Int32 startat)
at System.Text.RegularExpressions.MatchCollection.GetMatch(Int32 i)
at System.Text.RegularExpressions.MatchEnumerator.MoveNext()
at System.Linq.Enumerable.<CastIterator>d__94`1.MoveNext()
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
at ServiceControl.Recoverability.ExceptionTypeAndStackTraceFailureClassifier.ClassifyFailure(ClassifiableMessageDetails failure) in C:\BuildAgent\work\7189a56f9f44affc\src\ServiceControl\Recoverability\Grouping\Groupers\ExceptionTypeAndStackTraceFailureClassifier.cs:line 21
at ServiceControl.Recoverability.ClassifyFailedMessageEnricher.<Enrich>d__2.MoveNext() in C:\BuildAgent\work\7189a56f9f44affc\src\ServiceControl\Recoverability\Grouping\ClassifyFailedMessageEnricher.cs:line 24
at System.Collections.Generic.List`1.InsertRange(Int32 index, IEnumerable`1 collection)
at ServiceControl.Operations.FailedMessageFactory.GetGroups(String messageType, FailureDetails failureDetails, ProcessingAttempt processingAttempt) in C:\BuildAgent\work\7189a56f9f44affc\src\ServiceControl\Operations\FailedMessageFactory.cs:line 26
at ServiceControl.Operations.ErrorQueueImport.InnerHandle(TransportMessage message) in C:\BuildAgent\work\7189a56f9f44affc\src\ServiceControl\Operations\ErrorQueueImport.cs:line 151
at ServiceControl.Operations.ErrorQueueImport.Handle(TransportMessage message) in C:\BuildAgent\work\7189a56f9f44affc\src\ServiceControl\Operations\ErrorQueueImport.cs:line 81
at NServiceBus.Satellites.SatelliteLauncher.HandleMessageReceived(Object sender, TransportMessageReceivedEventArgs e, ISatellite satellite) in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Satellites\SatelliteLauncher.cs:line 89
at NServiceBus.Unicast.Transport.TransportReceiver.OnTransportMessageReceived(TransportMessage msg) in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Unicast\Transport\TransportReceiver.cs:line 413
at NServiceBus.Unicast.Transport.TransportReceiver.ProcessMessage(TransportMessage message) in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Unicast\Transport\TransportReceiver.cs:line 344
at NServiceBus.Unicast.Transport.TransportReceiver.TryProcess(TransportMessage message) in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Unicast\Transport\TransportReceiver.cs:line 230
at NServiceBus.Transports.Msmq.MsmqDequeueStrategy.Action(TransactionSettings transactionSettings, TransactionOptions transactionOptions, MsmqUnitOfWork unitOfWork, MessageQueue receiveQueue, MessageQueue errorQueue, CircuitBreaker circuitBreaker, CriticalError criticalError, AutoResetEvent peekResetEvent, TimeSpan receiveTimeout, SemaphoreSlim throttlingSemaphore, Func`2 tryProcessMessage, Action`2 endProcessMessage) in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Transports\Msmq\MsmqDequeueStrategy.cs:line 229
Source:
System
TargetSite:
Void DoCheckTimeout()
I find this issue to be odd because, it is hit or miss on the number of messages that actually end up in ServicePulse. Also when I replay the failed ones, some will come back (as expected) and some will disappear with a Event of Error showing up in the event logs.
Any help would be greatly appreciated.
NSB version 5.2.14
Thanks,
Ron