TryStatsN/StatsN

The library is not thread safe when sending metric

Opened this issue · 0 comments

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.