Skip to content

[FR] Custom default RetryConfig #1615

@regnaio

Description

@regnaio

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:

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. 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:

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions