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
