mirror of
https://gitee.com/milvus-io/milvus.git
synced 2026-01-07 19:31:51 +08:00
fix: fix storage v2 cgo mem leak (#40305)
related: #39173 Signed-off-by: shaoting-huang <shaoting.huang@zilliz.com>
This commit is contained in:
parent
837ac295fa
commit
d77756cf2d
@ -45,6 +45,7 @@ func NewPackedReader(filePaths []string, schema *arrow.Schema, bufferSize int64)
|
||||
var cas cdata.CArrowSchema
|
||||
cdata.ExportArrowSchema(schema, &cas)
|
||||
cSchema := (*C.struct_ArrowSchema)(unsafe.Pointer(&cas))
|
||||
defer cdata.ReleaseCArrowSchema(&cas)
|
||||
|
||||
cBufferSize := C.int64_t(bufferSize)
|
||||
|
||||
@ -71,6 +72,10 @@ func (pr *PackedReader) ReadNext() (arrow.Record, error) {
|
||||
// Convert ArrowArray to Go RecordBatch using cdata
|
||||
goCArr := (*cdata.CArrowArray)(unsafe.Pointer(cArr))
|
||||
goCSchema := (*cdata.CArrowSchema)(unsafe.Pointer(cSchema))
|
||||
defer func() {
|
||||
cdata.ReleaseCArrowArray(goCArr)
|
||||
cdata.ReleaseCArrowSchema(goCSchema)
|
||||
}()
|
||||
recordBatch, err := cdata.ImportCRecordBatch(goCArr, goCSchema)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to convert ArrowArray to Record: %w", err)
|
||||
|
||||
@ -47,6 +47,7 @@ func NewPackedWriter(filePaths []string, schema *arrow.Schema, bufferSize int64,
|
||||
var cas cdata.CArrowSchema
|
||||
cdata.ExportArrowSchema(schema, &cas)
|
||||
cSchema := (*C.struct_ArrowSchema)(unsafe.Pointer(&cas))
|
||||
defer cdata.ReleaseCArrowSchema(&cas)
|
||||
|
||||
cBufferSize := C.int64_t(bufferSize)
|
||||
|
||||
@ -82,6 +83,8 @@ func (pw *PackedWriter) WriteRecordBatch(recordBatch arrow.Record) error {
|
||||
|
||||
cArr := (*C.struct_ArrowArray)(unsafe.Pointer(&caa))
|
||||
cSchema := (*C.struct_ArrowSchema)(unsafe.Pointer(&cas))
|
||||
defer cdata.ReleaseCArrowSchema(&cas)
|
||||
defer cdata.ReleaseCArrowArray(&caa)
|
||||
|
||||
status := C.WriteRecordBatch(pw.cPackedWriter, cArr, cSchema)
|
||||
if err := ConsumeCStatusIntoError(&status); err != nil {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user