firebase / firebase/firebase-admin-node

[Messaging] sendEachForMulticast with a lot of tokens throws error

Ouverte
#2,943 1 commentaire 0 réactions 2 personnes assignées Réclamée par @jonathanedey Voir sur GitHub
api: messaging
Langage dominant
TypeScript
Étoiles
1.7k
Forks
419
Merge moyen
3 j 10 h
PR mergées (30 j)
16

Description

### [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](http://stackoverflow.com/)
with the firebase tag.
* For general Firebase discussion, use the [firebase-talk](https://groups.google.com/forum/#!forum/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](https://firebase.google.com/support/).

### [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:

```ts
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);
}
```

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.