firebase / firebase/firebase-admin-node

[FR] Custom default RetryConfig

Đang mở
#1,615 5 bình luận 2 reaction 1 người được giao Được @lahirumaramba nhận Xem trên GitHub
api: core type: feature request
Ngôn ngữ chính
TypeScript
Star
1.7k
Fork
419
Merge trung bình
3 ngày 10 giờ
Pull request đã merge (30 ngày)
16

Mô tả

**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

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.