Skip to content

[Messaging] sendEachForMulticast with a lot of tokens throws error #2943

Description

@ShadowWolf308

[READ] Step 1: Are you in the right place?

  • For issues related to the code in this repository file a Github issue.
  • If the issue pertains to Cloud Firestore, read the instructions in the "Firestore issue"
    template.
  • For general technical questions, post a question on StackOverflow
    with the firebase tag.
  • For general Firebase discussion, use the firebase-talk
    google group.
  • For help troubleshooting your application that does not fall under one
    of the above categories, reach out to the personalized
    Firebase support channel.

[REQUIRED] Step 2: Describe your environment

  • Operating System version: Docker version 28.0.1, build 068a01e (image is: oven/bun:1.2.12-alpine)
  • Firebase SDK version: 13.4.0
  • Firebase Product: messaging
  • Node.js version: v20.18.0
  • NPM version: 10.8.2

[REQUIRED] Step 3: Describe the problem

Steps to reproduce:

When using Http/2 with sendEachForMulticast will throw an error (Error while making requests: GOAWAY - exceeded_max_concurrent_streams, Error code: 1) when sending with a lot fcm tokens (lowest that i have tested that got rejected is 214)

if legacy http transport is enabled, this issue does not occur.

best guess why this happens is the fact that it sends a request for every token, therefore sending up to 500 requests at once which is too many for the http/2 implemenation of it.

Relevant Code:

const app = admin.initializeApp();
const messaging = app.messaging();

const tokens = []; // List of a lot of FCM tokens

try {
    const result = await messaging.sendEachForMulticast({ tokens });
} catch (err) {
    console.error(err);
}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions