OpenTelemetry v0.156.0

This release focuses on hardening the Collector's stability and data integrity. Key improvements include a fix for CPU-intensive GC loops in the memory limiter, prevention of duplicate data exports in OTLP/HTTP, and a guaranteed component startup sequence to prevent data loss. Additionally, developers gain more robust tools for metadata generation and health monitoring.

Exponential backoff for forced GC in memory_limiter — Prevents the Collector from getting stuck in a CPU-burning garbage collection loop when exporters are failing. This ensures that even under memory pressure, the Collector remains responsive enough to recover rather than exhausting CPU resources on ineffective GC runs.

OTLP/HTTP exporter no longer retries on 2xx body parsing errors — Prevents data duplication caused by re-sending telemetry that the server already successfully processed. By treating response body parsing failures (like those caused by size limits) as permanent errors, the exporter avoids unnecessary retries of accepted data.

Guaranteed receiver startup order after pipeline initialization — Eliminates a race condition where receivers could start ingest before the rest of the pipeline (like processors or exporters) was ready. This ensures your telemetry isn't dropped or misrouted during the initial startup phase of the Collector.

Health event reporting for memory_limiter — Enables better monitoring of Collector health by reporting memory limiting events through the standard component status API, allowing SREs to alert on memory pressure more effectively.

Enhanced metadata generation for component developers — Provides component developers with more granular control over generated Go structs, including stability levels and semantic convention references, leading to more standardized and predictable configuration schemas.