statsd histograms mutex narrowed
Costa Tsaousis (ktsaou) committed
Apr 16, 2018 at 18:11 UTC
28f64737ea09b02f3dfaeaf580ff671b2fa5d4b5
1 file changed
+4
-4
src/statsd.c
+4
-4
@@ -1701,8 +1701,6 @@ static inline void statsd_flush_set(STATSD_METRIC *m) {
1701
static inline void statsd_flush_timer_or_histogram(STATSD_METRIC *m, const char *dim, const char *family, const char *units) {
1702
debug(D_STATSD, "flushing %s metric '%s'", dim, m->name);
1703
1704
- netdata_mutex_lock(&m->histogram.ext->mutex);
1705
-
1704
if(unlikely(!m->histogram.ext->zeroed)) {
1705
// reset the metrics
1706
// if we collected anything, they will be updated below
@@ -1721,6 +1719,8 @@ static inline void statsd_flush_timer_or_histogram(STATSD_METRIC *m, const char
1719
1720
int updated = 0;
1721
if(unlikely(!m->reset && m->count && m->histogram.ext->used > 0)) {
1722
+ netdata_mutex_lock(&m->histogram.ext->mutex);
1723
+
1724
size_t len = m->histogram.ext->used;
1725
LONG_DOUBLE *series = m->histogram.ext->values;
1726
sort_series(series, len);
@@ -1738,6 +1738,8 @@ static inline void statsd_flush_timer_or_histogram(STATSD_METRIC *m, const char
1738
else
1739
m->histogram.ext->last_percentile = (collected_number)roundl(series[pct_len - 1] * statsd.decimal_detail);
1740
1741
+ netdata_mutex_unlock(&m->histogram.ext->mutex);
1742
+
1743
debug(D_STATSD, "STATSD %s metric %s: min " COLLECTED_NUMBER_FORMAT ", max " COLLECTED_NUMBER_FORMAT ", last " COLLECTED_NUMBER_FORMAT ", pcent " COLLECTED_NUMBER_FORMAT ", median " COLLECTED_NUMBER_FORMAT ", stddev " COLLECTED_NUMBER_FORMAT ", sum " COLLECTED_NUMBER_FORMAT,
1744
dim, m->name, m->histogram.ext->last_min, m->histogram.ext->last_max, m->last, m->histogram.ext->last_percentile, m->histogram.ext->last_median, m->histogram.ext->last_stddev, m->histogram.ext->last_sum);
1745
@@ -1748,8 +1750,6 @@ static inline void statsd_flush_timer_or_histogram(STATSD_METRIC *m, const char
1750
1751
if(unlikely(m->options & STATSD_METRIC_OPTION_PRIVATE_CHART_ENABLED && (updated || !(m->options & STATSD_METRIC_OPTION_SHOW_GAPS_WHEN_NOT_COLLECTED))))
1752
statsd_private_chart_timer_or_histogram(m, dim, family, units);
1751
-
1752
- netdata_mutex_unlock(&m->histogram.ext->mutex);
1753
}
1754
1755
static inline void statsd_flush_timer(STATSD_METRIC *m) {