Christopher Wolff created ARROW-15341:
-----------------------------------------
Summary: [Go] ipc.Reader Record Array leak
Key: ARROW-15341
URL: https://issues.apache.org/jira/browse/ARROW-15341
Project: Apache Arrow
Issue Type: Bug
Components: Go
Reporter: Christopher Wolff
ipc.Reader produces records whose columns have a reference count of two. As a
result, once the reference count of Records produced by the Reader goes to
zero, the column arrays will still have a reference count of one and won't be
properly accounted for.
The loading of the columns in the record is driven from this loop:
https://github.com/influxdata/idpe/blob/185d09d8250c456e6b8417fde622f921b8850c06/vendor/github.com/apache/arrow/go/arrow/ipc/file_reader.go#L338
The memory for the array buffers is allocated here:
https://github.com/influxdata/idpe/blob/185d09d8250c456e6b8417fde622f921b8850c06/vendor/github.com/apache/arrow/go/arrow/ipc/file_reader.go#L361
ctx.loadArray ultimately calls array.MakeFromData which returns an array with a
reference count already set to one.
Finally, array.NewRecord retains each of its columns:
https://github.com/influxdata/idpe/blob/cd8adab2c1d512f68376064cb7089067d4df567f/vendor/github.com/apache/arrow/go/arrow/array/record.go#L156
it seems like the code in ipc.Reader that constructs the column arrays needs to
release them once the Record has ownership.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)