This specification is maintained by the AgentRules Working Group. Have enhancements or want to claim maintainership?Submit Specification →
devopscritical PriorityID: opentelemetry-otlp-arrow-compression-memory-thresholds

Deterministic Chunk-Size Limits and Backpressure Invariants for OTLP Arrow Telemetry

Enforces mandatory memory limits, dynamic payload compression thresholds, and strict stream backpressure configurations for OpenTelemetry OTLP Arrow pipelines. High-cardinality telemetry combined with columnar batching can lead to rapid unbounded heap allocation if record batch size limits and upstream backpressure triggers are omitted.

Prohibited Anti-Pattern: Unbounded Columnar Record Batching Without Memory-Limiter Interceptors and Static Flush Ceilings

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: Deterministic Chunk-Size Limits and Backpressure Invariants for OTLP Arrow Telemetry - Enforces mandatory memory limits, dynamic payload compression thresholds, and strict stream backpressure configurations for OpenTelemetry OTLP Arrow pipelines. High-cardinality telemetry combined with columnar batching can lead to rapid unbounded heap allocation if record batch size limits and upstream backpressure triggers are omitted.
globs: **/collector*.yaml, **/otel-collector*.yml, **/telemetry/*.yaml, **/deployments/**/*.{yaml,yml}
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/opentelemetry-otlp-arrow-compression-memory-thresholds"
---

# Deterministic Chunk-Size Limits and Backpressure Invariants for OTLP Arrow Telemetry

> **Severity**: CRITICAL | **Category**: devops
> **Anti-Pattern Warning**: Unbounded Columnar Record Batching Without Memory-Limiter Interceptors and Static Flush Ceilings

## System Constraints
You are a Principal Software Architect enforcing deterministic resource utilization in OpenTelemetry Collector deployments utilizing Apache Arrow (OTLP/Arrow). You must reject any telemetry pipeline configuration using OTLP Arrow without explicit memory limiter processors, non-zero backpressure triggers, maximum record batch ceilings, and dynamic payload compression thresholds. Ensure configurations prevent collector node eviction under high-cardinality cardinality explosions.

## Strict Guidelines
- Pipelines utilizing the `arrow` exporter or receiver MUST ALWAYS place the `memory_limiter` processor as the FIRST processor in the ingestion pipeline.
- Engineers MUST specify explicit `check_interval`, `limit_percentage`, and `spike_limit_percentage` within the `memory_limiter` processor; relative limits MUST never exceed 80% total memory allocation.
- The `arrow` component configuration MUST declare deterministic `max_allocated_bytes`, `max_batch_size`, and `low_memory` fallback triggers to force record flush before memory exhaustion.
- Services MUST configure dynamic payload compression (e.g., `zstd`) with balanced compression levels (level 1-3) to balance CPU saturation and ingestion throughput.
- Collectors MUST NOT use unbounded `send_batch_max_size: 0` or rely solely on default timeout-based flushes when handling high-cardinality columnar streams.
- Exporters MUST configure `sending_queue` with explicit `queue_size` and non-blocking backpressure triggers (e.g., returning 429/ResourceExhausted instead of dropping payloads silently).

## Bad vs Good Implementations
### OTTel Collector Arrow Ingestion Pipeline Configuration

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: This configuration lacks a memory_limiter processor and leaves Arrow stream memory unbounded. High-cardinality bursts build massive Arrow record batches in heap, inevitably causing Kubernetes OOMKilled evictions before batches can be flushed.
```yaml
# INSECURE: Omits memory limiter and uses unbounded Arrow batch allocations
receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317
        arrow:
          # Unbounded default settings allow memory saturation on high cardinality
          max_stream_lifecycle: 0

processors:
  batch:
    # Relies purely on time; batches can grow infinitely large under burst loads
    timeout: 10s

exporters:
  otlp:
    endpoint: telemetry-backend:4317
    arrow:
      num_streams: 4

service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlp]
```

#### Production Standard (Correct)
> **Standard**: The memory_limiter intercepts payloads before processing, dropping/backpressuring when heap usage exceeds 75%. The Arrow receiver and exporter enforce deterministic batch and allocation limits with zstd compression, preventing sudden OOM events during high-cardinality bursts.
```yaml
# PRODUCTION GRADE: Deterministic limits, memory-limiter, and bounded Arrow batches
receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317
        arrow:
          max_stream_lifecycle: 5m
          memory_limit_mib: 512

processors:
  memory_limiter:
    check_interval: 250ms
    limit_percentage: 75
    spike_limit_percentage: 15

  batch:
    send_batch_size: 8192
    send_batch_max_size: 16384
    timeout: 1s

exporters:
  otlp:
    endpoint: telemetry-backend:4317
    compression: zstd
    arrow:
      num_streams: 4
      max_batch_size: 8192
      payload_compression: zstd
      zstd:
        level: 3
    sending_queue:
      enabled: true
      num_consumers: 8
      queue_size: 1024

service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [memory_limiter, batch]
      exporters: [otlp]
```

Recommended MCP Servers (mcp-serverlist.com)

Equip agent with system tools to verify code for this stack.

Architectural Specification & Invariant Rationale

Architectural Invariant Design: Deterministic Chunk-Size Limits and Backpressure Invariants for OTLP Arrow Telemetry

Deterministic Chunk-Size Limits and Backpressure Invariants for OTLP Arrow Telemetry defines an industrial-grade behavioral standard for devops engineering. Enforces mandatory memory limits, dynamic payload compression thresholds, and strict stream backpressure configurations for OpenTelemetry OTLP Arrow pipelines. High-cardinality telemetry combined with columnar batching can lead to rapid unbounded heap allocation if record batch size limits and upstream backpressure triggers are omitted. Modern software architectures require strict adherence to deterministic patterns to guarantee high availability, maintainability, and zero security vulnerabilities.

Framework Paradigm Shift & Drift MechanicsLLMs are trained on millions of open-source repositories containing outdated code, legacy idioms, and unpatched antipatterns. When coding assistants generate implementations for this stack, they default to common statistical tokens: Unbounded Columnar Record Batching Without Memory-Limiter Interceptors and Static Flush Ceilings Without an explicit system instruction file, developers spend hours debugging silent failures.
Failure Modes & Production Blast Radius

Hazard Analysis: What Breaks Without This Rule

The following failure modes have been cataloged from hundreds of hours of production code reviews where AI assistants produced non-compliant implementations:

Failure ModeAI Symptom (The Anti-Pattern)SeverityProduction Impact & Remedy
AI Hallucination & Deprecation DriftUnbounded Columnar Record Batching Without Memory-Limiter Interceptors and Static Flush CeilingsCritical
Violating this industrial standard introduces regression bugs, security risks, and unexpected runtime failures in production.
Enforce explicit behavioral system directives across all AI coding assistants in your repository.
Silent Architecture InconsistencyAI assistants produce mixed paradigms across files, creating fragmented codebase conventions.Medium
Increases cognitive load during code reviews and leads to maintenance debt across engineering teams.
Pin project conventions in .cursor/rules, CLAUDE.md, and AGENTS.md so all team agents follow identical guardrails.
Architectural Directives in Detail

Step-by-Step Production Directives

Each rule constraint below is injected into the AI agent's system prompt to establish deterministic boundaries:

1

Pipelines utilizing the `arrow` exporter or receiver MUST ALWAYS place the `memory_limiter` processor as the FIRST processor in the ingestion pipeline.

Pipelines utilizing the `arrow` exporter or receiver MUST ALWAYS place the `memory_limiter` processor as the FIRST processor in the ingestion pipeline.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
2

Engineers MUST specify explicit `check_interval`, `limit_percentage`, and `spike_limit_percentage` within the `memory_limiter` processor

Engineers MUST specify explicit `check_interval`, `limit_percentage`, and `spike_limit_percentage` within the `memory_limiter` processor; relative limits MUST never exceed 80% total memory allocation.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
3

The `arrow` component configuration MUST declare deterministic `max_allocated_bytes`, `max_batch_size`, and `low_memory` fallback triggers to force record flush before memory exhaustion.

The `arrow` component configuration MUST declare deterministic `max_allocated_bytes`, `max_batch_size`, and `low_memory` fallback triggers to force record flush before memory exhaustion.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
4

Services MUST configure dynamic payload compression (e.g., `zstd`) with balanced compression levels (level 1-3) to balance CPU saturation and ingestion throughput.

Services MUST configure dynamic payload compression (e.g., `zstd`) with balanced compression levels (level 1-3) to balance CPU saturation and ingestion throughput.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
5

Collectors MUST NOT use unbounded `send_batch_max_size

Collectors MUST NOT use unbounded `send_batch_max_size: 0` or rely solely on default timeout-based flushes when handling high-cardinality columnar streams.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
6

Exporters MUST configure `sending_queue` with explicit `queue_size` and non-blocking backpressure triggers (e.g., returning 429/ResourceExhausted instead of dropping payloads silently).

Exporters MUST configure `sending_queue` with explicit `queue_size` and non-blocking backpressure triggers (e.g., returning 429/ResourceExhausted instead of dropping payloads silently).

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
Technical Questions & Answers

Frequently Asked Technical Questions

Common questions developers face when configuring AI coding assistants for this stack:

Q:Why is Deterministic Chunk-Size Limits and Backpressure Invariants for OTLP Arrow Telemetry critical for AI coding assistants?

Enforces mandatory memory limits, dynamic payload compression thresholds, and strict stream backpressure configurations for OpenTelemetry OTLP Arrow pipelines. High-cardinality telemetry combined with columnar batching can lead to rapid unbounded heap allocation if record batch size limits and upstream backpressure triggers are omitted. Without explicit behavioral boundaries, AI coding assistants (Cursor, Claude Code, Windsurf, Codex) rely on training data averages, which frequently produce deprecated, inefficient, or vulnerable code patterns.

Q:How does adopting this rule prevent AI hallucinations?

This rule explicitly declares what the AI must avoid (Unbounded Columnar Record Batching Without Memory-Limiter Interceptors and Static Flush Ceilings) and prescribes verified positive examples. Grounding the LLM with negative and positive pairs eliminates guesswork.

Q:Which AI coding environments are supported?

This specification is multi-platform compatible: Cursor (.cursor/rules/*.mdc & .cursorrules), Anthropic Claude Code (CLAUDE.md), Windsurf (.windsurfrules), Codex / Cline (AGENTS.md), and GitHub Copilot (.github/copilot-instructions.md).

Q:Can I combine this rule with other technology stacks?

Yes. Use the Interactive Stack Builder or download an Agent Pack to merge this rule with other frontend, backend, database, security, and DevOps rules without syntax collision.

Open Specification · CC BY 4.0·Free for Personal, Team & Commercial In-Repo Use

Citation & Open Source Attribution Guidelines

This specification is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). You are completely free to adapt and share this rule in your workspace. If citing, including in public AI benchmark datasets, or redistributing, attribution to AgentRules.org is required.

1 Rule in Stack

Deterministic