apache/iceberg · warning · RuntimeException

Interrupted while waiting for array pool entry

Error message

Interrupted while waiting for array pool entry

What it means

ArrayPoolDataIteratorBatcher.getCachedEntry borrows an array from a blocking pool via pool.pollEntry(). If the waiting thread is interrupted, it re-interrupts the thread and wraps the InterruptedException in a RuntimeException so it propagates through the batching pipeline.

Source

Thrown at flink/v2.2/flink/src/main/java/org/apache/iceberg/flink/source/reader/ArrayPoolDataIteratorBatcher.java:157

    }

    @Override
    public void wakeUp() {
      pool.wakeUp();
    }

    /**
     * Gets a cached entry from the pool, blocking until an entry is recycled or the reader is woken
     * up.
     *
     * @return a cached array from the pool, or {@code null} if woken up
     */
    private T[] getCachedEntry() {
      try {
        return pool.pollEntry();
      } catch (InterruptedException e) {
        Thread.currentThread().interrupt();
        throw new RuntimeException("Interrupted while waiting for array pool entry", e);
      }
    }
  }
}

View on GitHub (pinned to 86d9c8fc54)

Solutions

  1. Usually benign during job cancellation — no action needed; the task is stopping anyway
  2. If unexpected, check for manual Thread.interrupt() calls in custom code or overly aggressive timeouts
  3. Retry the job/checkpoint; verify pool sizing (Flink reader batch size config) if stalls trigger cancellation
  4. Inspect thread dumps for deadlock around the pool if interruptions happen without cancellation
Defensive patterns

Strategy: try-catch

Try / catch

try {
  RecordsByArrays<T> batch = batcher.batch(records);
} catch (RuntimeException e) {
  if (e.getCause() instanceof InterruptedException && Thread.currentThread().isInterrupted()) {
    // task is being cancelled: exit reader loop cleanly
    return;
  }
  throw e;
}

Prevention

When it happens

Trigger: The task thread calling batch() is interrupted while blocked waiting for a free array from the pool — typically during Flink task cancellation or job failover shutdown.

Common situations: Cancelling a Flink job mid-read; task manager failover; shutting down the cluster while a source reader is batching records.

Understand the failure class

Background: Request timed out: what client-side request timeouts mean across libraries (Request timed out, TIMED_OUT, APITimeoutError) — this error's family across 39 libraries.

Related errors


AI-assisted analysis of apache/iceberg@86d9c8fc54 (2026-09-12). Data as JSON: /api/errors/211d9fbb2b0e16d0. Report an issue: GitHub.