laskoviymishka opened a new issue, #1051: URL: https://github.com/apache/iceberg-go/issues/1051
Parent: #589. `readAllDeleteFiles` returns a `perFilePosDeletes` map of `*arrow.Chunked` values. The cleanup `defer` in `createIterator` releases those chunks only when the returned iterator runs to exhaustion. On any error return from `GetRecords` between the loaders and the iterator construction — for example, a failing `readAllEqualityDeleteFiles` — the entire `deletesPerFile` map is discarded with `nil, nil, err` and no `Release()` is ever called. Arrow allocations are not freed by GC alone. `readAllDeletionVectors` (added by #996) merges its results into the same map. Spec-compliant DV bitmaps can be substantially larger than typical Parquet position-delete files, so the per-incident leaked surface is now meaningfully bigger than the pre-existing Parquet-only leak. Extract a `releasePerFilePosDeletes(m perFilePosDeletes)` helper and call it on every early-return path in `GetRecords`. `readAllDeletionVectors` already performs the same cleanup on its own internal error path — that block is a good template for the helper signature. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
