You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "Christopher Wolff (Jira)" <ji...@apache.org> on 2022/01/14 22:22:00 UTC

[jira] [Created] (ARROW-15341) [Go] ipc.Reader Record Array leak

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)