in src/Elastic.OpenTelemetry.Core/Processors/SpanCompressionProcessor.cs [29:62]
public override void OnEnd(Activity data)
{
if (data.Parent is null)
{
base.OnEnd(data);
return;
}
var property = data.GetCustomProperty("IsExitSpan");
if (!IsCompressionEligible(data, property) || data.Parent!.IsStopped)
{
FlushBuffer(data.Parent!);
base.OnEnd(data);
return;
}
if (_compressionBuffer.TryGetValue(data.Parent!, out var compressionBuffer))
if (!compressionBuffer.TryCompress(data))
{
FlushBuffer(data.Parent!);
_compressionBuffer.Add(data.Parent!, data);
}
else
{
_compressionBuffer.Add(data.Parent!, data);
data.ActivityTraceFlags &= ~ActivityTraceFlags.Recorded;
}
base.OnEnd(data);
static bool IsCompressionEligible(Activity data, object? property) =>
property is true && data.Status is ActivityStatusCode.Ok or ActivityStatusCode.Unset;
}