in src/Elastic.OpenTelemetry.Core/Processors/SpanCompressionProcessor.cs [64:86]
private void FlushBuffer(Activity data)
{
if (!_compressionBuffer.TryGetValue(data, out var compressionBuffer))
return;
// This recreates the initial activity now we know it's final end time and can record it.
using var activity = compressionBuffer.Source.StartActivity(compressionBuffer.DisplayName, compressionBuffer.Kind, compressionBuffer.Parent!.Context,
compressionBuffer.TagObjects, compressionBuffer.Links, compressionBuffer.StartTimeUtc);
var property = compressionBuffer.GetCustomProperty("Composite");
if (property is Composite composite)
{
activity?.SetTag("span_compression.strategy", composite.CompressionStrategy);
activity?.SetTag("span_compression.count", composite.Count);
activity?.SetTag("span_compression.duration", composite.DurationSum);
}
var endTime = compressionBuffer.StartTimeUtc.Add(compressionBuffer.Duration);
activity?.SetEndTime(endTime);
activity?.Stop();
_compressionBuffer.Remove(data);
}