in src/Elastic.OpenTelemetry.Core/Extensions/ActivityExtensions.cs [14:50]
public static bool TryCompress(this Activity buffered, Activity sibling)
{
Composite? composite = null;
var property = buffered.GetCustomProperty("Composite");
if (property is Composite c)
composite = c;
var isAlreadyComposite = composite is not null;
var canBeCompressed = isAlreadyComposite
? buffered.TryToCompressComposite(sibling, composite!)
: buffered.TryToCompressRegular(sibling, ref composite);
if (!canBeCompressed)
return false;
if (!isAlreadyComposite)
{
composite ??= new Composite();
composite.Count = 1;
composite.DurationSum = buffered.Duration.Milliseconds;
}
composite!.Count++;
composite.DurationSum += sibling.Duration.Milliseconds;
buffered.SetCustomProperty("Composite", composite);
var endTime = sibling.StartTimeUtc.Add(sibling.Duration);
buffered.SetEndTime(endTime);
sibling.ActivityTraceFlags &= ~ActivityTraceFlags.Recorded;
return true;
}