Grafana Tempo shows "Root span not yet received" after filtering spans in SpanProcessor

I’m using:

  • Next.js (with OpenTelemetry auto-instrumentation)
  • Grafana Tempo as tracing backend
  • OTLP exporter

I filtered out several noisy spans (e.g. middleware, csrf, auth-related)
using a custom SpanProcessor.

Since then, Tempo often shows:
“Root span not yet received”

Questions:

  1. Does this mean I accidentally dropped the root span?
  2. Is it expected behavior if child spans arrive before the root?
  3. Is filtering spans in SpanProcessor the wrong approach?
  4. Would it be better to filter in Tempo/Grafana instead?
  5. Is there a recommended way to reduce noise in Next.js traces
    without breaking trace structure?

Any guidance or best practices would be appreciated.