Memory Leak Issue in GCP Cloud Function Triggered by Topic Messages

  Kiến thức lập trình

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
}

enter image description here

enter image description here

LEAVE A COMMENT