We found out an exception like below:
System.InvalidOperationException: This BackgroundWorker is currently busy and cannot run multiple tasks concurrently.
at System.ComponentModel.BackgroundWorker.RunWorkerAsync(Object argument)
at StatsN.BaseCommunicationProvider.SendMetric(String metric)
at StatsN.Statsd.LogMetricAsync(String metricName, String value, String metricType, String postfix)
Looks like in BaseCommunicationProvider.SendMetric,
|
if (!worker.IsBusy) worker.RunWorkerAsync(); |
It does check if the worker is busy, but looks like this may not be thread safe.
We found out an exception like below:
System.InvalidOperationException: This BackgroundWorker is currently busy and cannot run multiple tasks concurrently.
at System.ComponentModel.BackgroundWorker.RunWorkerAsync(Object argument)
at StatsN.BaseCommunicationProvider.SendMetric(String metric)
at StatsN.Statsd.LogMetricAsync(String metricName, String value, String metricType, String postfix)
Looks like in BaseCommunicationProvider.SendMetric,
StatsN/src/StatsN/BaseCommunicationProvider.cs
Line 84 in 79b7f29
It does check if the worker is busy, but looks like this may not be thread safe.