private async Task StoreTimingAsync(TimeBucket timeBucket, AggregatedTimingMetric timing) { _logger.Trace(() => $"Storing timing name={timing.Key.Name} count={timing.Count} total={timing.TotalDuration} min={timing.MinDuration} max={timing.MaxDuration} time={timing.Key.StartTimeUtc}"); string countKey = GetBucketKey(CacheMetricNames.Timing, timing.Key.Name, timing.Key.StartTimeUtc, timeBucket.Size, CacheMetricNames.Count); await _cache.IncrementAsync(countKey, timing.Count, timeBucket.Ttl).AnyContext(); string totalDurationKey = GetBucketKey(CacheMetricNames.Timing, timing.Key.Name, timing.Key.StartTimeUtc, timeBucket.Size, CacheMetricNames.Total); await _cache.IncrementAsync(totalDurationKey, timing.TotalDuration, timeBucket.Ttl).AnyContext(); string maxKey = GetBucketKey(CacheMetricNames.Timing, timing.Key.Name, timing.Key.StartTimeUtc, timeBucket.Size, CacheMetricNames.Max); await _cache.SetIfHigherAsync(maxKey, timing.MaxDuration, timeBucket.Ttl).AnyContext(); string minKey = GetBucketKey(CacheMetricNames.Timing, timing.Key.Name, timing.Key.StartTimeUtc, timeBucket.Size, CacheMetricNames.Min); await _cache.SetIfLowerAsync(minKey, timing.MinDuration, timeBucket.Ttl).AnyContext(); _logger.Trace(() => $"Done storing timing name={timing.Key.Name}"); }
private async Task StoreTimingAsync(TimeBucket timeBucket, AggregatedTimingMetric timing) { if (_logger.IsEnabled(LogLevel.Trace)) { _logger.LogTrace("Storing timing name={Name} count={Count} total={TotalDuration} min={MinDuration} max={MaxDuration} time={StartTimeUtc}", timing.Key.Name, timing.Count, timing.TotalDuration, timing.MinDuration, timing.MaxDuration, timing.Key.StartTimeUtc); } string countKey = GetBucketKey(CacheMetricNames.Timing, timing.Key.Name, timing.Key.StartTimeUtc, timeBucket.Size, CacheMetricNames.Count); string totalDurationKey = GetBucketKey(CacheMetricNames.Timing, timing.Key.Name, timing.Key.StartTimeUtc, timeBucket.Size, CacheMetricNames.Total); string maxKey = GetBucketKey(CacheMetricNames.Timing, timing.Key.Name, timing.Key.StartTimeUtc, timeBucket.Size, CacheMetricNames.Max); string minKey = GetBucketKey(CacheMetricNames.Timing, timing.Key.Name, timing.Key.StartTimeUtc, timeBucket.Size, CacheMetricNames.Min); await Task.WhenAll( _cache.IncrementAsync(countKey, timing.Count, timeBucket.Ttl), _cache.IncrementAsync(totalDurationKey, timing.TotalDuration, timeBucket.Ttl), _cache.SetIfHigherAsync(maxKey, timing.MaxDuration, timeBucket.Ttl), _cache.SetIfLowerAsync(minKey, timing.MinDuration, timeBucket.Ttl) ).AnyContext(); if (_logger.IsEnabled(LogLevel.Trace)) { _logger.LogTrace("Done storing timing name={Name}", timing.Key.Name); } }