onEnd method

  1. @override
void onEnd(
  1. ReadOnlySpan span
)
override

Implementation

@override
void onEnd(ReadOnlySpan span) {
  if (_isShutdown) {
    return;
  }

  final isSampled =
      span.spanContext.traceFlags & TraceFlags.sampled == TraceFlags.sampled;
  if (!isSampled) {
    return;
  }

  if (_spanBuffer.length >= _maxBufferSize) {
    // Drop the oldest span to bound memory; native owns durability once a
    // batch is handed over.
    _spanBuffer.removeAt(0);
    _log.warning('Span buffer full ($_maxBufferSize); dropping oldest span');
  }

  _spanBuffer.add(span);

  // Eager push: hand the span to native immediately. While a push is in
  // flight, newly ended spans coalesce into the next one.
  _flush();
}