I’m using a GCP cloud-function, where its trigger would be a topic.
However, when sending several messages to this topic, the cloud-function executes, for each execution, an increase in RAM memory and over time the memory allocation size only increases, as if there were no garbage collector.
Inside my function I’m using “defer” to leave my variables with a nil value, and even so I can’t reduce the memory over the course of the executions.
Can anyone help me?
my code:
func DeletionPubSub(ctx context.Context, e event.Event) error {
println("---------Start Pub Sub---------")
sendToDeletionQueue := new(models.SendToDeletionQueue)
msg := new(MessagePublishedData)
if err := e.DataAs(msg); err != nil {
return fmt.Errorf("event.DataAs: %w", err)
}
if err := json.Unmarshal(msg.Message.Data, sendToDeletionQueue); err != nil {
return fmt.Errorf("json.Unmarshal: %w", err)
}
println("---------value bytes---------", string(msg.Message.Data))
functionsBuild := cmd.NewFunctions(ctx).
UseMongoDb(ctx).
UseBqContextDelete(ctx).
UsePubSub(ctx).
UseService(ctx)
defer func() {
msg = nil
sendToDeletionQueue = nil
functionsBuild.Close()
functionsBuild = nil
}()
err := functionsBuild.Service.DeleteAll(ctx, *sendToDeletionQueue)
if err != nil {
println("---------Error---------", err.Error())
}
println("---------End Deletion Pub Sub---------")
return nil
}