firebase / firebase/firebase-admin-node
[FR] Auto-retry FCM requests that failed due to an internal error (messaging/internal-error)
- Vorherrschende Sprache
- TypeScript
- Sterne
- 1.7k
- Forks
- 419
- Ø Merge
- 3 T. 10 Std.
- Gemergte PRs (30 T.)
- 16
Beschreibung
**Is your feature request related to a problem? Please describe.**
Our Sentry has captured about 20,000 messaging/internal-error errors. This means that due to some internal FCM error, we haven't sent 20,000 push notifications to our users.
**Describe the solution you'd like**
FCM documentation recommends retrying such requests. https://firebase.google.com/docs/cloud-messaging/send-message#admin.
Currently, the library retries 503 requests but not 500 (messaging/internal-error returns 500) https://github.com/firebase/firebase-admin-node/blob/b5c4f5ae551249b64632baf2ece7b5c594a1965f/src/utils/api-request.ts#L202
It would be nice to change the default retry configuration or allow library users to use their own retry configs. It seems the solution is already implemented in https://github.com/firebase/firebase-admin-node/pull/1739 but stuck in review phase for 2 years.
**Describe alternatives you've considered**
I considered writing a custom wrapper around the FCM error, but it appears that FCM doesn't expose the Retry-After header, making it unclear how long the wrapper should wait before making another request.
Additionally, copying and pasting the same wrapper in each project that uses FCM is a very frustrating experience
Beitragsleitfaden
Rechercherichtung
Start with src/utils/api-request.ts at the retry handling referenced in the issue, then review Firebase Cloud Messaging's retry guidance and pull request #1739. The change should cover messaging/internal-error responses and either update the default retry configuration or allow custom retry configurations.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- node.js, typescript
- Bereich
- api, backend
- Issue-Typ
- Feature
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100