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]

Reply via email to