OpenTelemetry Collector v0.156.0 is a bugfix rollup with one operator-relevant behavior change: the memory_limiter processor switches from continuous forced GC to exponential backoff, with the cap exposed via two new config fields. Several targeted fixes address permanent-error handling in otlp_http, receiver startup ordering, env var nil resolution, and retry config validation.
enhancementmemory_limiter GC backoff now configurable via two new fields
The memory_limiter processor now backs off GC calls exponentially when GC is deemed ineffective (soft limit still exceeded and less than 5% memory reclaimed). The backoff cap is controlled by max_gc_interval_when_soft_limited and max_gc_interval_when_hard_limited, both defaulting to 30s. If you tune GC aggressiveness, review these new fields; the default behavior changes from continuous forced GC to capped backoff.
Key changes (7)
- memory_limiter processor: forced GC now uses exponential backoff when ineffective, capped by new fields max_gc_interval_when_soft_limited and max_gc_interval_when_hard_limited (default 30s each)
- otlp_http exporter: parse errors on truncated 2xx response bodies are now permanent errors, preventing duplicate exports on retry
- pkg/service: receivers now start only after all other components have fully initialized, fixing a race with shared-implementation receivers like OTLP
- env provider: an unset variable with ${env:VAR:-} syntax now resolves to empty string instead of nil
- configretry BackOffConfig fields validated regardless of the Enabled flag
- memory_limiter processor now emits componentstatus health events reflecting its current state
- mdatagen enhancements: stability levels for resource attributes, semantic convention references, field_name option in go_struct, enum validator support, and distinct named Go types for primitive exported config schemas