Min-Young Wu created ARROW-15946: ------------------------------------ Summary: [Go] Memory leak in pqarrow.NewColumnWriter with nested structures Key: ARROW-15946 URL: https://issues.apache.org/jira/browse/ARROW-15946 Project: Apache Arrow Issue Type: Bug Components: Go, Parquet Reporter: Min-Young Wu
There seems to be a memory leak (well, using the default allocator, it would just be an accounting error?) when writing nested structures using pqarrow.FileWriter Repro: {code:go} package main import ( "bytes" "fmt" "github.com/apache/arrow/go/v7/arrow" "github.com/apache/arrow/go/v7/arrow/array" "github.com/apache/arrow/go/v7/arrow/memory" "github.com/apache/arrow/go/v7/parquet" "github.com/apache/arrow/go/v7/parquet/compress" "github.com/apache/arrow/go/v7/parquet/pqarrow" ) func main() { allocator := memory.NewCheckedAllocator(memory.DefaultAllocator) sc := arrow.NewSchema([]arrow.Field{ {Name: "f32", Type: arrow.PrimitiveTypes.Float32, Nullable: true}, {Name: "i32", Type: arrow.PrimitiveTypes.Int32, Nullable: true}, {Name: "struct_i64_f64", Type: arrow.StructOf( arrow.Field{Name: "i64", Type: arrow.PrimitiveTypes.Int64, Nullable: true}, arrow.Field{Name: "f64", Type: arrow.PrimitiveTypes.Float64, Nullable: true})}, }, nil) bld := array.NewRecordBuilder(allocator, sc) bld.Field(0).(*array.Float32Builder).Append(1.0) bld.Field(1).(*array.Int32Builder).Append(1) sbld := bld.Field(2).(*array.StructBuilder) sbld.Append(true) sbld.FieldBuilder(0).(*array.Int64Builder).Append(1) sbld.FieldBuilder(1).(*array.Float64Builder).Append(1.0) rec := bld.NewRecord() bld.Release() var buf bytes.Buffer wr, err := pqarrow.NewFileWriter(sc, &buf, parquet.NewWriterProperties(parquet.WithCompression(compress.Codecs.Snappy)), pqarrow.NewArrowWriterProperties(pqarrow.WithAllocator(allocator))) if err != nil { panic(err) } err = wr.Write(rec) if err != nil { panic(err) } rec.Release() wr.Close() if allocator.CurrentAlloc() != 0 { fmt.Printf("remaining allocation size: %d\n", allocator.CurrentAlloc()) } } {code} -- This message was sent by Atlassian Jira (v8.20.1#820001)