You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Unhandled exception. System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
at System.Collections.Generic.List`1.Enumerator.MoveNextRare()
at zipkin4net.Tracers.Zipkin.WriterExtensions.WriteList[U](StreamWriter writer, SerializeMethod`1 serializer, String fieldName, ICollection`1 elements, IPEndPoint endPoint, String serviceName)
at zipkin4net.Tracers.Zipkin.JSONSpanSerializer.SerializeSpan(StreamWriter writer, Span span)
at zipkin4net.Tracers.Zipkin.JSONSpanSerializer.SerializeTo(Stream stream, Span span)
at OpenPlatform.AspNetCore.Infrastructure.CusJSONSpanSerializer.SerializeTo(Stream stream, Span span) in /src/PlaformServices/Libraries/OpenPlatform.AspNetCore/Infrastructure/ZipkinStartup.cs:line 88
at zipkin4net.Tracers.Zipkin.ZipkinTracerReporter.Report(Span span)
at zipkin4net.Internal.Recorder.MutableSpanMap.FlushOldSpans(DateTime utcNow)
at zipkin4net.Internal.Recorder.MutableSpanMap.<.ctor>b__6_0(Object _)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
at System.Threading.TimerQueueTimer.CallCallback(Boolean isThreadPool)
at System.Threading.TimerQueueTimer.Fire(Boolean isThreadPool)
at System.Threading.TimerQueue.FireNextTimers()
I review the source code . and i know this is the problem of the System.Threading.Timer. This timer won't wait the pre task to finish ,and will start next task. That is the problem.
To verification this, I output the span when exception raise. This is show below:
I have catch this exception in my product env:
I review the source code . and i know this is the problem of the System.Threading.Timer. This timer won't wait the pre task to finish ,and will start next task. That is the problem.
To verification this, I output the span when exception raise. This is show below:
There are two "flush.timeout" annotations, their timestamp are very close.
Maybe you should consider when to trigger the timer task.Please fix it.
The text was updated successfully, but these errors were encountered: