weaviate/weaviate · error

failed to shutdown trace provider: %w

Error message

failed to shutdown trace provider: %w

What it means

Provider.Shutdown failed while flushing and shutting down the SDK TracerProvider within a 30s timeout. Typically means the OTLP collector was unreachable so buffered spans could not be exported, or shutdown exceeded the deadline. Raised during server shutdown; the node is already stopping.

Source

Thrown at usecases/telemetry/opentelemetry/provider.go:155

func (p *Provider) Tracer() trace.Tracer {
	if p.tracer == nil {
		return noop.NewTracerProvider().Tracer("noop")
	}
	return p.tracer
}

// Shutdown gracefully shuts down the provider
func (p *Provider) Shutdown(ctx context.Context) error {
	if p.provider == nil {
		return nil
	}

	// Set a timeout for shutdown
	shutdownCtx, cancel := context.WithTimeout(ctx, 30*time.Second)
	defer cancel()

	if err := p.provider.Shutdown(shutdownCtx); err != nil {
		return fmt.Errorf("failed to shutdown trace provider: %w", err)
	}

	p.logger.Info("OpenTelemetry provider shutdown successfully")
	return nil
}

// IsEnabled returns whether OpenTelemetry is enabled
func (p *Provider) IsEnabled() bool {
	return p.config != nil && p.config.Enabled
}

View on GitHub (pinned to 75aa4b6d11)

Solutions

  1. Log and continue shutdown: tracing data may be lost but the node must still exit
  2. Ensure the OTLP collector is reachable and fast enough to drain the span buffer
  3. Increase the shutdown timeout or reduce batch size if flushes routinely time out
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at usecases/telemetry/opentelemetry/provider.go:155 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of weaviate/weaviate@75aa4b6d11 (2026-09-04). Data as JSON: /api/errors/bdcf90047e7accbc. Report an issue: GitHub.