This specification is maintained by the AgentRules Working Group. Have enhancements or want to claim maintainership?Submit Specification →
devopscritical PriorityID: otel-arrow-ingestion-columnar-memory-bounds

OpenTelemetry Arrow Protocol Ingestion with Strict Columnar Memory Bounds

High-throughput OpenTelemetry ingestion pipelines utilizing the OTel-Arrow protocol must enforce strict off-heap columnar memory boundaries and backpressure controls. Bypassing Arrow Flight stream limits or omitting early-stage memory limiters causes uncontrolled schema dilation, columnar buffer fragmentation, and catastrophic stop-the-world garbage collection pauses.

Prohibited Anti-Pattern: Unbounded Arrow Flight RPC Streams Without Off-Heap Memory Limiter and Columnar Batch Slicing

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: OpenTelemetry Arrow Protocol Ingestion with Strict Columnar Memory Bounds - High-throughput OpenTelemetry ingestion pipelines utilizing the OTel-Arrow protocol must enforce strict off-heap columnar memory boundaries and backpressure controls. Bypassing Arrow Flight stream limits or omitting early-stage memory limiters causes uncontrolled schema dilation, columnar buffer fragmentation, and catastrophic stop-the-world garbage collection pauses.
globs: **/otelcol*.{yaml,yml}, **/collector*.{yaml,yml}, deployments/**/otel-*.yaml
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/otel-arrow-ingestion-columnar-memory-bounds"
---

# OpenTelemetry Arrow Protocol Ingestion with Strict Columnar Memory Bounds

> **Severity**: CRITICAL | **Category**: devops
> **Anti-Pattern Warning**: Unbounded Arrow Flight RPC Streams Without Off-Heap Memory Limiter and Columnar Batch Slicing

## System Constraints
You are a Principal Systems Engineer and DevOps Architect specializing in high-throughput observability pipelines. You strictly enforce the correct implementation of the OpenTelemetry Arrow protocol, ensuring zero-copy Flight streams maintain bounded columnar memory allocations, deterministic batch horizons, and proactive upstream backpressure to prevent garbage collection pauses and collector process termination.

## Strict Guidelines
- Pipelines MUST place the `memory_limiter` processor as the absolute FIRST processor in every pipeline definition handling OTel-Arrow streams.
- Engineers MUST specify explicit `limit_percentage` and `spike_limit_percentage` or hard memory caps rather than relying on collector default unlimited memory bounds.
- Services MUST configure `arrow.memory_limit_mib` alongside gRPC concurrent stream bounds on the `otelarrow` receiver to prevent off-heap pool exhaustion.
- Code MUST NOT convert columnar Arrow record batches into intermediate row-oriented OTLP protobuf representations unless strictly required by legacy downstream exporters.
- Receivers MUST enforce max connection lifetimes and stream recycling intervals (`max_stream_lifetime`) to reclaim fragmented columnar schema dictionary allocations.
- Pipelines NEVER omit backpressure propagation; receivers must push window-exhaustion signals back to upstream exporters when memory thresholds approach spike limits.

## Bad vs Good Implementations
### Configuring OTel-Arrow Receiver and Memory Limits in OpenTelemetry Collector

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: The collector exposes an unconstrained OTel-Arrow endpoint without off-heap memory ceilings or concurrent stream bounds. Lacking a memory_limiter processor at the start of the pipeline, high-cardinality bursts allocate unbounded columnar Arrow buffers off-heap, triggering extreme heap pressure and inevitable process crash loops under load.
```yaml
# Anti-Pattern: Arrow receiver configured without memory limits or stream constraints
receivers:
  otelarrow:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317

processors:
  batch:
    send_batch_size: 100000
    timeout: 10s
  # Missing memory_limiter as the first processor
  # Arrow buffers can scale dynamically until OS invokes OOM Killer

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

#### Production Standard (Correct)
> **Standard**: Enforces deterministic boundaries on OTel-Arrow stream lifespans, explicit Arrow allocator limits (2048 MiB), and executes the memory_limiter processor first in the pipeline. Stream recycling mitigates dictionary bloat, and early checks shed load before garbage collection latency degrades pipeline throughput.
```yaml
# Production Standard: Constrained Arrow flight ingestion with hard memory guardrails
receivers:
  otelarrow:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317
        max_concurrent_streams: 1024
        max_recv_msg_size_mib: 32
    arrow:
      memory_limit_mib: 2048
      max_stream_lifetime: 15m

processors:
  memory_limiter:
    check_interval: 250ms
    limit_percentage: 75
    spike_limit_percentage: 20
  batch:
    send_batch_max_size: 8192
    timeout: 200ms

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

Architectural Specification & Invariant Rationale

Architectural Invariant Design: OpenTelemetry Arrow Protocol Ingestion with Strict Columnar Memory Bounds

OpenTelemetry Arrow Protocol Ingestion with Strict Columnar Memory Bounds defines an industrial-grade behavioral standard for devops engineering. High-throughput OpenTelemetry ingestion pipelines utilizing the OTel-Arrow protocol must enforce strict off-heap columnar memory boundaries and backpressure controls. Bypassing Arrow Flight stream limits or omitting early-stage memory limiters causes uncontrolled schema dilation, columnar buffer fragmentation, and catastrophic stop-the-world garbage collection pauses. 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 Arrow Flight RPC Streams Without Off-Heap Memory Limiter and Columnar Batch Slicing 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 Arrow Flight RPC Streams Without Off-Heap Memory Limiter and Columnar Batch SlicingCritical
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 MUST place the `memory_limiter` processor as the absolute FIRST processor in every pipeline definition handling OTel-Arrow streams.

Pipelines MUST place the `memory_limiter` processor as the absolute FIRST processor in every pipeline definition handling OTel-Arrow 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.
2

Engineers MUST specify explicit `limit_percentage` and `spike_limit_percentage` or hard memory caps rather than relying on collector default unlimited memory bounds.

Engineers MUST specify explicit `limit_percentage` and `spike_limit_percentage` or hard memory caps rather than relying on collector default unlimited memory bounds.

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

Services MUST configure `arrow.memory_limit_mib` alongside gRPC concurrent stream bounds on the `otelarrow` receiver to prevent off-heap pool exhaustion.

Services MUST configure `arrow.memory_limit_mib` alongside gRPC concurrent stream bounds on the `otelarrow` receiver to prevent off-heap pool 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

Code MUST NOT convert columnar Arrow record batches into intermediate row-oriented OTLP protobuf representations unless strictly required by legacy downstream exporters.

Code MUST NOT convert columnar Arrow record batches into intermediate row-oriented OTLP protobuf representations unless strictly required by legacy downstream exporters.

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

Receivers MUST enforce max connection lifetimes and stream recycling intervals (`max_stream_lifetime`) to reclaim fragmented columnar schema dictionary allocations.

Receivers MUST enforce max connection lifetimes and stream recycling intervals (`max_stream_lifetime`) to reclaim fragmented columnar schema dictionary allocations.

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

Pipelines NEVER omit backpressure propagation

Pipelines NEVER omit backpressure propagation; receivers must push window-exhaustion signals back to upstream exporters when memory thresholds approach spike limits.

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 OpenTelemetry Arrow Protocol Ingestion with Strict Columnar Memory Bounds critical for AI coding assistants?

High-throughput OpenTelemetry ingestion pipelines utilizing the OTel-Arrow protocol must enforce strict off-heap columnar memory boundaries and backpressure controls. Bypassing Arrow Flight stream limits or omitting early-stage memory limiters causes uncontrolled schema dilation, columnar buffer fragmentation, and catastrophic stop-the-world garbage collection pauses. 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 Arrow Flight RPC Streams Without Off-Heap Memory Limiter and Columnar Batch Slicing) 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

OpenTelemetry