functions-framework-nodejs icon indicating copy to clipboard operation
functions-framework-nodejs copied to clipboard

getting Possible EventEmitter memory leak detected in firebase-functions framework

Open jdziek opened this issue 1 year ago • 0 comments

Hi. Originall i posted this issue on https://github.com/googleapis/nodejs-firestore/issues/2072 and after running various tests they referred me to this repo.

I started getting a memory leak warning a few days ago for no apparent reason. I did update packages a few weeks ago but didn't see anything till recently. I updated the packages to the most recent ones again and still got that message. This warning pops up whenever a function is initiated.

image

  1. Is this a client library issue or a product issue? I believe this is a google-cloud package issue. I get this error, particularly in functions that must process files to storage.

  2. Did someone already solve this? I've seen it has been an issue in the past but nothing has been raised since then on a current release

Environment details

It happens on gen 2 firebase functions using [email protected] using nodejs 20 OtherGCPp packages that I'm using are "@google-cloud/documentai": "^8.8.0", "@google-cloud/firestore": "^7.8.0", "@google-cloud/pubsub": "^4.5.0", "@google-cloud/storage": "^7.11.2", "firebase-admin": "^12.1.1", "firebase-functions": "^5.0.1",

Here is a snippet of my code. The issue happens in every function that references google-cloud packages, so its not an isolated issue to this particular code, but I thought that it cant hurt including it.


import firestore from "@google-cloud/firestore";
import { InternalServerError } from "@moveready/request-errors/lib/index.js";
import envConfig from "../shared_utilities/envConfig.js";

const client = new firestore.v1.FirestoreAdminClient();

export default {
  async createDbBackup() {
    try {
      const databaseName = client.databasePath(
        envConfig.gcp.projectId,
        "(default)",
      );

      return client
        .exportDocuments({
          name: databaseName,
          outputUriPrefix: `gs://${envConfig.gcp.dbBackupBucket}`,
          collectionIds: [],
        })
        .then(([response]) => {
          logger.info(`Backup creation was successful: ${response.name}`);
          return response;
        })
        .catch((err) => {
          logger.error(err);
          throw new InternalServerError();
        });
    } catch (err) {
      logger.error(err);
      throw err;
    }
  },
};

Other versions of packages I tested

    "@google-cloud/firestore": "^7.7.0",
    "@google-cloud/pubsub": "^4.4.0",
    "@google-cloud/storage": "^7.10.0",
    "firebase-admin": "^11.1.0",
    "firebase-functions": "^4.8.1",
    "firebase-tools":" 13.8.1"

and

  "firebase-tools": "^13.0.2"
  "@google-cloud/documentai": "^7.3.1",
  "@google-cloud/firestore": "^6.4.1",
  "@google-cloud/pubsub": "^3.4.1",
  "@google-cloud/storage": "^6.7.0",
  "firebase-admin": "^11.3.0",
  "firebase-functions": "^4.5.0",

Any help would be greatly appreciated.

jdziek avatar Jun 26 '24 09:06 jdziek