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
- Usually benign during job cancellation — no action needed; the task is stopping anyway
- If unexpected, check for manual Thread.interrupt() calls in custom code or overly aggressive timeouts
- Retry the job/checkpoint; verify pool sizing (Flink reader batch size config) if stalls trigger cancellation
- 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
- Don't interrupt reader threads manually; rely on Flink cancellation
- If batching stalls cause timeouts, tune reader batch size / pool capacity properties
- During job cancel/restart, treat this as expected shutdown noise
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
- Interrupted when waiting for deletions to complete
- Interrupted during refresh
- Database %s already exists in the iceberg catalog %s.
- Interrupted in call to initialize
- Interrupted during tryLock
AI-assisted analysis of apache/iceberg@86d9c8fc54 (2026-09-12).
Data as JSON: /api/errors/211d9fbb2b0e16d0.
Report an issue: GitHub.