Skip to content

Commit a6232d9

Browse files
committed
Fix another memory leak
Signed-off-by: Felix Wang <[email protected]>
1 parent ae71efa commit a6232d9

2 files changed

Lines changed: 12 additions & 3 deletions

File tree

go/embedded/online_features.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -241,14 +241,13 @@ func (s *OnlineFeatureService) GetOnlineFeatures(
241241
s.tsColumnBuildersToRelease = append(s.tsColumnBuildersToRelease, tsColumnBuilder)
242242
s.arraysToRelease = append(s.arraysToRelease, statusColumn)
243243
s.arraysToRelease = append(s.arraysToRelease, tsColumn)
244+
s.arraysToRelease = append(s.arraysToRelease, featureVector.Values)
244245
}
245246

246247
result := array.NewRecord(arrow.NewSchema(outputFields, nil), outputColumns, int64(numRows))
247248
s.resultsToRelease = append(s.resultsToRelease, result)
248249

249-
cdata.ExportArrowRecordBatch(result,
250-
cdata.ArrayFromPtr(output.DataPtr),
251-
cdata.SchemaFromPtr(output.SchemaPtr))
250+
cdata.ExportArrowRecordBatch(result, cdata.ArrayFromPtr(output.DataPtr), cdata.SchemaFromPtr(output.SchemaPtr))
252251

253252
return nil
254253
}

go/internal/feast/onlineserving/serving.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,8 @@ func KeepOnlyRequestedFeatures(
415415
vectorsByName := make(map[string]*FeatureVector)
416416
expectedVectors := make([]*FeatureVector, 0)
417417

418+
usedVectors := make(map[string]bool)
419+
418420
for _, vector := range vectors {
419421
vectorsByName[vector.Name] = vector
420422
}
@@ -438,6 +440,14 @@ func KeepOnlyRequestedFeatures(
438440
return nil, fmt.Errorf("requested feature %s can't be retrieved", featureRef)
439441
}
440442
expectedVectors = append(expectedVectors, vectorsByName[qualifiedName])
443+
usedVectors[qualifiedName] = true
444+
}
445+
446+
// Free arrow arrays for vectors that were not used.
447+
for _, vector := range vectors {
448+
if _, ok := usedVectors[vector.Name]; !ok {
449+
vector.Values.Release()
450+
}
441451
}
442452

443453
return expectedVectors, nil

0 commit comments

Comments
 (0)