firebase / firebase/firebase-admin-node

[FR] Custom default RetryConfig

Aperta
#1,615 5 commenti 2 reazioni 1 assegnatario Rivendicata da @lahirumaramba Vedi su GitHub
api: core type: feature request
Lingua principale
TypeScript
Stelle
1.7k
Fork
419
Merge medio
3g 10h
PR unite (30g)
16

Descrizione

**Is your feature request related to a problem? Please describe.**
Please allow users of `firebase-admin-node` to define their own default `RetryConfig`

Currently, users are forced to use the [default `RetryConfig`](https://github.com/firebase/firebase-admin-node/blob/master/src/utils/api-request.ts#L202):

```js
export function defaultRetryConfig(): RetryConfig {
return {
maxRetries: 4,
statusCodes: [503],
ioErrorCodes: ['ECONNRESET', 'ETIMEDOUT'],
backOffFactor: 0.5,
maxDelayInMillis: 60 * 1000,
};
}
```

**Personal use case**: I have a Node app where I want **zero retries** for Firebase HTTP requests. Retries create `setTimeout` timers that can cause I/O polling blocking of `setImmediate` according to the [Event Loop](https://blog.insiderattack.net/handling-io-nodejs-event-loop-part-4-418062f917d1). Thus, retries are causing hitches (ranging from hundreds of milliseconds to a few seconds) in my otherwise tight `setImmediate` loop, which I want to run as interrupted as possible

---

**Describe the solution you'd like**
Please somehow allow users to define their own `RetryConfig`, perhaps as a parameter when initalizing Firebase Admin:
```js
import * as admin from 'firebase-admin';

const app = admin.initializeApp(
options?: admin.AppOptions | undefined, // perhaps include custom RetryConfig as a field in options?
// ...
)
```

---

**Describe alternatives you've considered**
1. Wrapping `firebase-admin-node` in a `Worker` and using `Comlink` to successfully prevent I/O polling blocking, but I'd rather avoid using `Worker`
2. Rewriting a barebones Node Firebase Admin with only the API endpoints I need, but I'd much rather use the official `firebase-admin-node`

---

**Additional context**
- https://github.com/firebase/firebase-admin-node/pull/518
- https://github.com/firebase/firebase-admin-node/pull/556

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.