stablyai/orca · error · Error

ORCA_PTY_BENCH_INGRESS_CHUNKS must be positive, received ${I

Error message

ORCA_PTY_BENCH_INGRESS_CHUNKS must be positive, received ${INGRESS_CHUNKS}

What it means

Thrown by config/scripts/pty-batch-flush-benchmark.mjs when ORCA_PTY_BENCH_INGRESS_CHUNKS fails `!Number.isInteger(INGRESS_CHUNKS) || INGRESS_CHUNKS <= 0`. INGRESS_CHUNKS (default 96) controls how many ingress data chunks the batched-flush path processes per slice, modeling realistic PTY input burstiness. The guard at line 29-30 protects the per-slice write loop from running zero or negative iterations.

Source

Thrown at config/scripts/pty-batch-flush-benchmark.mjs:30

const MAX_WRITES_PER_SLICE = 2
const RECENT_PTY_OUTPUT_LIMIT = 4096
const MAX_TAIL_LINES = 2000
const MAX_TAIL_CHARS = 256 * 1024
const MAX_TAIL_PARTIAL_CHARS = 4000
const OSC_TITLE_RE = /\x1b\]([012]);([^\x07\x1b]*?)(?:\x07|\x1b\\)/g
const URL_CANDIDATE_PATTERN = /\bhttps?:\/\/[^\s<>"'`]+/gi

if (!Number.isInteger(PTY_COUNT) || PTY_COUNT <= 0) {
  throw new Error(`ORCA_PTY_BENCH_PTY_COUNT must be positive, received ${PTY_COUNT}`)
}
if (!Number.isInteger(PAYLOAD_CHARS) || PAYLOAD_CHARS <= 0) {
  throw new Error(`ORCA_PTY_BENCH_PAYLOAD_CHARS must be positive, received ${PAYLOAD_CHARS}`)
}
if (!Number.isInteger(RUNS) || RUNS <= 0) {
  throw new Error(`ORCA_PTY_BENCH_RUNS must be positive, received ${RUNS}`)
}
if (!Number.isInteger(INGRESS_CHUNKS) || INGRESS_CHUNKS <= 0) {
  throw new Error(`ORCA_PTY_BENCH_INGRESS_CHUNKS must be positive, received ${INGRESS_CHUNKS}`)
}
if (!Number.isInteger(INGRESS_CHUNK_CHARS) || INGRESS_CHUNK_CHARS <= 0) {
  throw new Error(`ORCA_PTY_BENCH_INGRESS_CHARS must be positive, received ${INGRESS_CHUNK_CHARS}`)
}

function makePendingData() {
  const pending = new Map()
  for (let index = 0; index < PTY_COUNT; index++) {
    pending.set(`pty-${index}`, `${index}:`.padEnd(PAYLOAD_CHARS, 'x'))
  }
  return pending
}

function simulateWebContentsSend(id, data) {
  return v8.serialize({ channel: 'pty:data', payload: { id, data } }).byteLength
}

function flushLegacy(pending) {

View on GitHub (pinned to 1136503c6a)

Solutions

  1. Set ORCA_PTY_BENCH_INGRESS_CHUNKS to a positive integer (default 96).
  2. Unset it to accept the default.
  3. Double-check you set CHUNKS (count) and not CHARS (size) when tuning the ingress model.

Example fix

// before
ORCA_PTY_BENCH_INGRESS_CHUNKS=0 node config/scripts/pty-batch-flush-benchmark.mjs

// after
ORCA_PTY_BENCH_INGRESS_CHUNKS=96 node config/scripts/pty-batch-flush-benchmark.mjs
Defensive patterns

Strategy: validation

Validate before calling

const raw = process.env.ORCA_PTY_BENCH_INGRESS_CHUNKS
if (raw !== undefined && (!Number.isInteger(Number(raw)) || Number(raw) <= 0)) {
  throw new Error(`ORCA_PTY_BENCH_INGRESS_CHUNKS='${raw}' must be a positive integer`)
}

Type guard

function isPositiveInt(value) {
  const n = Number(value)
  return Number.isInteger(n) && n > 0
}

Prevention

When it happens

Trigger: Run the benchmark with ORCA_PTY_BENCH_INGRESS_CHUNKS set to `0`, a negative number, an empty string, or non-numeric input. parseInt at line 9 returns NaN for garbage and the line-29 guard throws.

Common situations: A user tunes the ingress model to simulate a quieter workload and accidentally sets the chunk count to zero, or a parameterized CI job forwards a blank matrix variable. Distinguishing INGRESS_CHUNKS from INGRESS_CHARS is a frequent source of misassignment.

Related errors


AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12). Data as JSON: /api/errors/7df6375d7802a569. Report an issue: GitHub.