The GitHub Actions job "Required Checks" on texera.git/iceberg-reader-leak has 
failed.
Run started by GitHub user aglinxinyuan (triggered by aglinxinyuan).

Head commit for run:
be111a9c72675c5aeaef99795aa087485c03f1b9 / Xinyuan Lin <[email protected]>
fix(amber): close Iceberg reader streams leaked by iterator probes

IcebergDocument's read iterator opened a Parquet reader (and the
S3InputStream beneath it) inside hasNext, so probe-shaped consumers -
isEmpty/nonEmpty/hasNext-only checks, e.g. VirtualDocumentSpec's
"clear the document" test - opened a stream and then abandoned the
iterator with no close path. The GC finalizer eventually reclaimed
each one, logging "[S3InputStream] Unclosed input stream created by
..." warnings all over CI. Bounded reads had the same hole: the
limit close only ran on a subsequent hasNext call that bounded
consumers never make.

Restructure the iterator so hasNext acquires nothing:

* hasNext claims the next data file from FileScanTask.recordCount
  metadata alone - the same field the whole-file skip already
  trusts; planFiles() never splits files in Iceberg 1.9.2 and the
  write path is strictly append-only, so the count is exact;
* the Parquet reader opens lazily in next() via openPendingFile();
* next() closes the reader deterministically the moment a bounded
  read (getRange) has served its last record;
* all closes go through an idempotent closeCurrentReader() that also
  resets the record iterator, so a closed reader is never polled.

Record sequences, hasNext semantics, and the incremental-snapshot
refresh behavior are unchanged - only where streams open and close
moved.

Also close the RESTCatalog in IcebergRestCatalogIntegrationSpec's
afterAll: Iceberg 1.9.2 tracks per-table FileIO instances and closes
them with the catalog, removing the sibling "Unclosed S3FileIO
instance" finalizer warnings from the same CI logs.

Report URL: https://github.com/apache/texera/actions/runs/30142317800

With regards,
GitHub Actions via GitBox

Reply via email to